【发布时间】:2011-07-07 18:16:24
【问题描述】:
好的,所以我知道通过关闭我可以做这样的事情:
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
但是,它不起作用..这有可能以某种方式做到吗?
谢谢。
【问题讨论】:
-
不确定我是否完全理解你想要做什么...... x 应该是全球性的吗?或者它应该是obj中的一个变量,还是你希望它是一个私有变量......我不清楚你想在这里做什么。
-
x 应该是 obj 中的一个变量。最终我试图解决嵌套在多个函数中时无法使用“this”来引用对象本身的问题。我总是不得不在我的对象的 init 方法中定义'self = this',并且我一直在寻找一种自动化的方法,所以我的所有对象默认都有一个 self 变量,它将引用对象本身。这是我真正在做的一个例子:pastie.org/1627048
标签: javascript oop closures