好的,所以我知道通过关闭我可以做这样的事情:
var x,
obj = {
init: function() {
x = 123;
},
func: function() {
return x;
}
};
obj.init();
obj.func();
==> 123
但是,我想在外部能够应用x的值(在对象之外,稍后)...我想也许我可以这样做:
var obj = {
init: function() {
// do something nice here...
},
func: function() {
return x;
}
};
var foo = {
doIt: function() {
var init = obj.init;
var x;
obj.init = function() {
x = 456;
init.apply(obj);
}
obj.init();
obj.func();
}
};
foo.doIt();
==> (error) x is not defined
然而,它不起作用..这可能以某种方式吗?
感谢。
答案 0 :(得分:1)
您可以使用new
运算符创建类型的对象,并在该对象上设置属性。
function Foo() {
this.init = function() {
this.x = -1;
};
this.func = function() {
return this.x;
};
}
var o = new Foo;
o.x = 941;
o.func(); // 941
o.x = 22;
o.func(); // 22