Javascript 外部设置对象中应可访问的变量
好的,我知道通过闭包我可以做这样的事情:Javascript 外部设置对象中应可访问的变量,javascript,oop,closures,Javascript,Oop,Closures,好的,我知道通过闭包我可以做这样的事情: var x, obj = { init: function() { x = 123; }, func: function() { return x; } }; obj.init(); obj.func(); ==> 123 但是,我希望能够在外部应用x的值(在对象外部,以及以后)。。。我想也许我
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
但是,它不起作用。。这有可能吗
谢谢。您可以使用
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
不确定我是否完全理解你想做什么。。。x应该是全球性的吗?或者它应该是obj中的一个变量,或者您希望它是一个私有变量。。。我不清楚你想在这里做什么。x应该是obj中的一个变量。。最终,我试图解决一个问题,即当嵌套在多个函数中时,不能使用“this”来引用对象本身。我总是必须在我的对象的init方法中定义“self=this”,我一直在寻找一种方法使其自动化,因此默认情况下,我的所有对象都有一个引用对象本身的自变量。以下是我真正正在做的一个例子: