JavaScriptで関数を定義すると、その関数をコンストラクターとして使用する場合に備えて、インタープリターはprototype
その関数でオブジェクトを指す特別なプロパティを使用できるようにします。コンストラクターを使用して新しいオブジェクトを作成する場合、[[Prototype]]
内部プロパティはこのオブジェクトを指します。
prototype
プロパティを新しいプロパティに置き換えると、その参照が置き換えられます。オブジェクトをインスタンス化した後でこれを行うと、オブジェクトが古くprototype
なっているように見えます(そのオブジェクトは、指している元のオブジェクトを指しています)。[[Prototype]]
prototype
ソリューション
プロパティに直接新しいプロパティを割り当てるだけprototype
です。
var constructor = function() { };
constructor.prototype.someMethod = function() { };
拡張タイプ関数を使用して、既存のprototype
プロパティを新しいオブジェクトで拡張します(この例では、アンダースコアのextend()
関数を使用しました)。
var constructor = function() { };
_.extend(constructor.prototype, { someMethod: function() { } });
prototype
コンストラクターの後で、プロパティの割り当てがプログラムの次のステップであることを確認してください(通常はお勧めしません)。
var constructor = function() { };
constructor.prototype = { someMethod: function() { } };