var MyClass = (function () {
var _data;
var cls = function () { };
cls.prototype = {
init: function(data){
_data = data;
}
};
cls.foo = _data;
cls.bar = 1;
return cls;
})();
var someData = { foo: true };
var cls = new MyClass();
cls.init(someData);
console.log(MyClass.foo); //undefined
console.log(MyClass.bar); //1
为什么MyClass.foo
没有设置在这里?它是在我运行的init()
方法中设置的。因此它应该返回{ foo: true }
。我错过了什么?
答案 0 :(得分:2)
cls.foo = _data;
不会将cls.foo
别名为_data
。它只复制_data
的值,该值在执行时为undefined
。
在cls.foo
内设置init
,或者{更好}使cls.foo
动态设置为function() { return _data; }
。
答案 1 :(得分:1)
我相信这就是你想要的:
function MyClass() { }
MyClass.prototype.init = function (data) {
MyClass.foo = data;
};
MyClass.bar = 1;
现在它将按预期工作:
var someData = { foo: true };
var cls = new MyClass;
cls.init(someData);
console.log(MyClass.foo);
console.log(MyClass.bar);
请参阅此处的演示:http://jsfiddle.net/gTDZk/