javascript中的对象引发了我的循环!
在此设置中......
var obj = {
someVar: "my awesome variable",
foo: {
bar: function(){
alert(this.someVar);
}
}
};
我如何让obj.foo.bar正确提醒someVar
的值?
答案 0 :(得分:1)
使用捕获的obj:
var obj = {
someVar: "my awesome variable",
foo: {
bar: function(){
alert(obj.someVar);
}
}
};
答案 1 :(得分:1)
alert(obj.someVar);
没有聪明的方法走上祖先的链条。如果您正在寻找某种类型的this.parent
符号,对象不知道它们被包含在哪里。没有什么可以说对象甚至只有一个“父”。
foo.foo = new Object();
bar.bar = foo.foo;
bar.bar.parent == ???
答案 2 :(得分:1)
Javascript中的函数仅在应用.
运算符的对象的上下文中调用。由于Javascript对象本身并不知道它们的父对象,因此无法向上走。
执行此操作的唯一方法是单独引用obj
。 (作为bar
的属性或单独的变量)
答案 3 :(得分:1)
这是我刚刚为向上遍历而制作的一般化模式。根据您的需求/假设,您可能会降低一些复杂性。
var obj = (function (parent) {
var obj = {
foo: "foo",
up: function () {
return parent;
}
};
obj.bar = (function (parent) {
var obj = {
baz: function () {
alert(this.up().foo);
},
up: function () {
return parent;
}
};
return obj;
}(obj));
return obj;
}(window));
obj.bar.baz(); // "foo"
这几乎肯定比它的价值更麻烦。