2017-01-21 4 views
1

これらの関数の違いは何ですか?利点と欠点は何ですか?JavaScriptプロトタイプ関数

let Test = function(name) { 
    this.name = name; 
    this.complete = function() { 
    console.log(`completing task${this.name}`) 
    } 
} 

let Test = function(name) { 
    this.name = name; 
} 

Test.prototype.complete = function() { 
    console.log(`completing task${this.name}`) 
} 

答えて

2

違いは、あなたが最初の関数を作成する各オブジェクトは、それがcomplete関数の別個のインスタンスだ持っているだろうということです。 2番目の関数で作成する各オブジェクトは同じcomplete関数を共有しますが、これはTestを使って作成したオブジェクトのプロトタイプにあります。

したがって、最初の関数を使用して100個のオブジェクトを作成した場合、これらのオブジェクトはすべてcomplete関数のメモリ内で異なる参照を持ちます。 2番目のケースでは、これらのオブジェクトすべてがそのプロトタイプ上でcomplete関数を見つけるため、1つしか持たないでしょう。

関連する問題