我有点困惑如何说这个,但我想要的是我期望从代码“this.this。”。
在数组中
Foo =
{
bar :
{
Tool : function()
{
return this.this.foofoo;
},
},
foofoo : "rawr"
}
从函数Foo.bar.Tool()中我如何才能访问数据foofoo?
谢谢!
答案 0 :(得分:3)
我担心你不能。
this
不能像您预期的那样工作 - 它指的是您代表的函数调用该函数,与无关的函数已定义。
例如:
var blah = { prop: 'blahprop' };
var cow = {
cowfunc: function() {
alert(this.prop); // Notice there's no 'prop' in cow
}
};
blah.blahfunc = cow.cowfunc;
blah.blahfunc(); // alerts 'blahprop'
如果您想要这种行为,则需要传入foofoo
(或其父级)。
或者,您可以在问题中初始化Foo
,然后在bar
上设置对Foo
的引用:
Foo.bar.Foo = Foo;
然后,假设您在Tool
上呼叫bar
,则可以将Tool
更改为:
Tool: function() {
return this.Foo.foofoo; // 'this' refers to bar when called like bar.Tool()
}
答案 1 :(得分:1)
简单地引用父对象:
Foo =
{
bar :
{
Tool : function()
{
return Foo.foofoo;
},
},
foofoo : "rawr"
}
alert(Foo.bar.Tool()); // alerts "rawr"
答案 2 :(得分:0)
在JavaScript中,变量(和对象的属性)引用值;他们不包含他们。考虑这段代码:
var foo = { message:"hello" };
var bar1 = { o:foo };
var bar2 = { b:foo };
在上文中,bar1.o
与bar2.a
是同一个对象。您可以考虑foo
的“父”,即没有关于任何值的名称或所有权的信息。
您无法使用您拥有的数据结构执行所需操作。您需要向“父”提供显式指针,或者在局部变量周围使用闭包。