Ok I shouldこれについての回答を知っていますが、何らかの理由で私は本当に理解していないか、JavaScriptを実際に知る必要がありませんでした。基本的なJavaScript OO
私の質問は以下のコードサンプルを見るとわかりました。わかりましたか、いくつかの情報がありません。
サンプル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
メソッドの1つのインスタンスが使用されます。
var MyClass3 = {
IsOld: function (age) {
if (age > 40) {
return true;
}
return false;
},
};
// sample uage
console.log(MyClass3.IsOld(34));
注:私はSOのが、私は実際に私には意味を成していたものを見つけることができなかったいくつかの理由で、ここで同様の質問/回答のたくさんがあります推測しています。
あなた第2の例は即座の関数式IMOと不必要に複雑であるが、理解は正しい。 –
@FelixKling:これはCoffeeScriptがクラスをコンパイルする方法です:http://coffeescript.org/#try:class%20Auto – Amberlamps