JavaScript コンストラクタ関数
同じ構造を持つ多くのオブジェクトを作成するには、コンストラクタ関数を使用します。
コンストラクタ関数は設計図(ブループリント)として機能します。new キーワードを使用して、この設計図からオブジェクトを構築します。コンストラクタの名前は、大文字で始める必要があります。
仕組み:
new キーワードを使用すると、JavaScriptは次の4つの操作を行います。
- 新しい空のオブジェクトを作成します。
thisがその新しいオブジェクトを指すように設定します。- 関数コードを実行します。
- 新しいオブジェクトを返します。
this キーワードは不可欠です。関数内では、this は作成された新しいオブジェクトを指します。
例:
function Employee(name, salary) {
this.name = name;
this.salary = salary;
}
const emp1 = new Employee("Ram", 50000);
const emp2 = new Employee("Kumar", 60000);
両方のオブジェクトは同じ構造を共有しています。
メソッドの追加:
コンストラクタ内に関数を追加できます。
function Employee(name, salary) {
this.name = name;
this.salary = salary;
this.displayInfo = function() {
console.log(this.name + " earns " + this.salary);
};
}
メモリ管理:
コンストラクタ内に直接メソッドを追加すると、オブジェクトごとに新しいコピーが作成されます。これにより、より多くのメモリを消費します。
代わりに、prototype プロパティを使用します。
Employee.prototype.greet = function() {
console.log("Hello " + this.name);
};
これにより、すべての従業員が greet メソッドの単一のコピーを共有するようになります。これにより、コードの効率が向上します。
まとめ:
- 単一のオブジェクトにはオブジェクトリテラルを使用します。
- 同じ構造を持つ複数のオブジェクトにはコンストラクタ関数を使用します。
出典: https://dev.to/dev_saravanan_journey/javascript-constructor-functions-k6k