0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【javascript】prototype

Last updated at Posted at 2021-11-17

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で作成したメソッドの参照先(エイリアス)を作ることで、参照するだけで呼び出せるのでメモリ効率が良い。

スクリーンショット 2021-11-17 18.12.18.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?