Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种方法可以从父对象的父对象运行某些内容?_Javascript - Fatal编程技术网

Javascript 是否有一种方法可以从父对象的父对象运行某些内容?

Javascript 是否有一种方法可以从父对象的父对象运行某些内容?,javascript,Javascript,可能重复: 我有点困惑怎么说,但我想从代码“this.this.”中得到我所期望的 阵列中 Foo = { bar : { Tool : function() { return this.this.foofoo; }, }, foofoo : "rawr" } 从函数Foo.bar.Tool()中,如何让它访问数据foooo 谢谢 恐怕你不能 此的工作方式与您可能期望的不同——它指代您

可能重复:

我有点困惑怎么说,但我想从代码“this.this.”中得到我所期望的

阵列中

Foo = 
{
    bar : 
    {
        Tool : function()
        {
            return this.this.foofoo;
        },
    },
    foofoo : "rawr"
}
从函数Foo.bar.Tool()中,如何让它访问数据foooo

谢谢

恐怕你不能

的工作方式与您可能期望的不同——它指代您调用函数的对象,与函数的定义位置无关

例如:

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'
如果您想要这种行为,您需要传入
foooo
(或其父项)

或者,您可以像问题中那样初始化
Foo
,然后在
bar
上设置对
Foo
的引用:

Foo.bar.Foo = Foo;
然后,假设您在
栏上调用
工具
,您可以将
工具
更改为:

Tool: function() {
    return this.Foo.foofoo;   // 'this' refers to bar when called like bar.Tool()
}
恐怕你不能

的工作方式与您可能期望的不同——它指代您调用函数的对象,与函数的定义位置无关

例如:

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'
如果您想要这种行为,您需要传入
foooo
(或其父项)

或者,您可以像问题中那样初始化
Foo
,然后在
bar
上设置对
Foo
的引用:

Foo.bar.Foo = Foo;
然后,假设您在
栏上调用
工具
,您可以将
工具
更改为:

Tool: function() {
    return this.Foo.foofoo;   // 'this' refers to bar when called like bar.Tool()
}

只需逐字引用父对象:

Foo = 
{
    bar : 
    {
        Tool : function()
        {
            return Foo.foofoo;
        },
    },
    foofoo : "rawr"
}

alert(Foo.bar.Tool()); // alerts "rawr"

只需逐字引用父对象:

Foo = 
{
    bar : 
    {
        Tool : function()
        {
            return Foo.foofoo;
        },
    },
    foofoo : "rawr"
}

alert(Foo.bar.Tool()); // alerts "rawr"
在JavaScript中,变量(和对象的属性)引用值;它们不包含它们。考虑这个代码:

var foo = { message:"hello" };
var bar1 = { o:foo };
var bar2 = { b:foo };
在上面的例子中,
bar1.o
是与
bar2.a
相同的对象。您可能会考虑<代码> FoO 的“父”,这是没有关于任何值的名称或所有权的信息。

对于现有的数据结构,您无法随心所欲。您需要提供返回“父对象”的显式指针,或者在局部变量周围使用闭包。

在JavaScript中,变量(和对象属性)引用值;它们不包含它们。考虑这个代码:

var foo = { message:"hello" };
var bar1 = { o:foo };
var bar2 = { b:foo };
在上面的例子中,
bar1.o
是与
bar2.a
相同的对象。您可能会考虑<代码> FoO 的“父”,这是没有关于任何值的名称或所有权的信息。

对于现有的数据结构,您无法随心所欲。您需要提供返回“父”的显式指针,或者在局部变量周围使用闭包