prototypeとは
- オブジェクトに存在する特別なプロパティ
- コンストラクタ関数と合わせて利用する。
- インスタンス化した際に,内部的に
__proto__
へコピーされprototypeへの参照エイリアスになり、メモリの効率化ができる。
使い方
function Person(name, age){
this.name = name;
this.age = age;
}
//コンストラクタ関数にprototype.追加したいメソッド名 = 無名関数
//とすることでインスタンス化した時にメソッドとして利用することができる。
Person.prototype.hello = function(){
console.log('hello' + this.name)
}
const bob = new Person('Bob', 18);
const tom = new Person('Tom', 21);
bob.hello(); >> hello Bob
tom.hello(); >> hello Tom
メモリの最適化
コンストラクタ関数の中にhelloメソッドを作成することもできるが、呼び出す度に新たメソッドを作ることになるため、メモリの消費効率が悪い。
function Person(name, age){
this.name = name;
this.age = age;
this.hello = function(){ //helloメソッドを定義できるが毎回このメソッドをメモリ上に追加しなければならい。
console.log('hello' + this.name)
}
}
const bob = new Person('Bob', 18);
const tom = new Person('Tom', 21);
bob.hello();
tom.hello();
内部的にprototypeプロパティにprototypeで作成したメソッドの参照先(エイリアス)を作ることで、参照するだけで呼び出せるのでメモリ効率が良い。