【发布时间】:2015-01-02 03:41:20
【问题描述】:
在尝试创建私有静态方法的方法时,我遇到了这种非常奇怪的行为。在下面的代码中,公共方法 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方法赋值后需要一个semi(;);这是一种表达方式。否则,该函数将传递您的匿名结果,并将结果分配给 instance.getData
标签: javascript closures anonymous-function