好的,我应该知道这个问题的答案,但由于某些原因我从未真正理解或需要了解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));
第三个示例
不需要实例化函数/类来访问IsOld
方法。一个IsOld
方法的单一实例在所有调用中使用。
var MyClass3 = {
IsOld: function (age) {
if (age > 40) {
return true;
}
return false;
},
};
// sample uage
console.log(MyClass3.IsOld(34));
注意:我猜测在SO上有很多类似的问题/答案,但出于某种原因我找不到一个对我来说真正有意义的。