当尝试使用私有静态方法的方法时,我遇到了这种非常奇怪的行为。在下面的代码中,公共方法getData被它自己的返回数据覆盖,尽管它从未被明确调用!这对我来说很奇怪,并想知道这里发生了什么。我认为它不仅适用于根据模块模式包含匿名函数中的整个页面,而且还希望了解这个错误。在匿名函数中扩展原型 - 奇怪的效果
function MyClass() {
this._prop = true;
}
MyClass.prototype.getData = function() {
this._prop = false;
return { a: 2344, b: 765, c: 234 };
}
(function() {
var privateStatic = 0;
MyClass.prototype.getCount = function() {
return privateStatic++;
}
}());
var m = new MyClass();
console.log(m.getData()); //Error (object is not a function)
console.log(m.getData); //prints {a:2344,b:765,c:234}
您需要getData方法赋值后的半(;);这是一个表达。否则该函数会传递您的匿名结果,并将其结果分配给instance.getData – dandavis 2014-11-05 20:02:00