わかりました。これに対する答えを知っている必要がありますが、何らかの理由で、JavaScriptを実際に理解したことがないか、実際に理解する必要がありました。
私の質問は次のとおりです。以下のコードサンプルを見ると、理解が正しいのでしょうか、それともいくつかの情報が不足しているのでしょうか。
サンプル1
メソッドを使用するには、関数(またはクラス)をインスタンス化する必要があります。インスタンスごとに関数IsOld
の個別のコピーが作成されます。IsOld
function MyClass1() {
this.IsOld = function (age) {
if (age > 40) {
return true;
}
return false;
};
}
// sample usage
var m1 = new MyClass1();
console.log(m1.IsOld(34));
サンプル2
インスタンス化する必要がありますが、スクリプトエンジンとは異なり、クラスインスタンスごとMyClass1
にメソッドのコピーを作成する必要はありません。IsOld
var MyClass2 = (function () {
function MyClass2() { }
MyClass2.prototype.IsOld = function (age) {
if (age > 40) {
return true;
}
return false;
};
return MyClass2;
})();
// sample usage
var m2 = new MyClass2();
console.log(m2.IsOld(34));
サンプル3
メソッドにアクセスするために関数/クラスをインスタンス化する必要はありませんIsOld
。メソッドの単一のインスタンスがIsOld
すべての呼び出しで使用されます。
var MyClass3 = {
IsOld: function (age) {
if (age > 40) {
return true;
}
return false;
},
};
// sample uage
console.log(MyClass3.IsOld(34));
注:SOには同様の質問/回答がたくさんあると思いますが、何らかの理由で実際に意味のあるものを見つけることができませんでした。