如何在javascript中从obj.foo.bar访问主obj?

如何在javascript中从obj.foo.bar访问主obj?,javascript,Javascript,javascript中的对象让我陷入了一个循环 在这个设置中 var obj = { someVar: "my awesome variable", foo: { bar: function(){ alert(this.someVar); } } }; 如何让obj.foo.bar使用捕获的obj正确警告someVar的值?: var obj = { someVar: "my awesome variabl

javascript中的对象让我陷入了一个循环

在这个设置中

var obj = {
    someVar: "my awesome variable",
    foo: {
        bar: function(){
            alert(this.someVar);
        }
    }
};
如何让obj.foo.bar使用捕获的obj正确警告
someVar的值?

var obj = {
    someVar: "my awesome variable",
    foo: {
        bar: function(){
            alert(obj.someVar);
        }
    }
};
使用捕获的obj:

var obj = {
    someVar: "my awesome variable",
    foo: {
        bar: function(){
            alert(obj.someVar);
        }
    }
};
没有聪明的方法可以沿着祖先的链条走。如果要查找某种类型的
this.parent
表示法,对象不知道它们包含在哪里。没有什么可以说一个对象甚至有一个“父对象”

没有聪明的方法可以沿着祖先的链条走。如果要查找某种类型的
this.parent
表示法,对象不知道它们包含在哪里。没有什么可以说一个对象甚至有一个“父对象”


Javascript中的函数仅在应用了
运算符的对象的上下文中调用。这是不可能的,因为Javascript对象本质上并不知道它们的父对象


唯一的方法是单独引用
obj
。(作为
条的属性或单独的变量)

Javascript中的函数仅在应用
运算符的对象上下文中调用。这是不可能的,因为Javascript对象本质上并不知道它们的父对象


唯一的方法是单独引用
obj
。(作为
条的一个属性或一个单独的变量)

这里有一个我刚刚为向上遍历准备的通用模式。根据您的需求/假设,您可能会降低一些复杂性

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"

几乎可以肯定,这比它的价值要麻烦得多。

这里有一个我刚刚为向上遍历设计的通用模式。根据您的需求/假设,您可能会降低一些复杂性

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"

几乎可以肯定,这比它的价值要麻烦得多。

这对我来说非常有用,而这正是我真正需要的。我只是想知道,我只是将对象用作收集失控函数的包装器,这实际上是我第一次尝试组织obj.properties以供以后使用。这和jQuery引用主obj属性时使用的方法是一样的吗?还是这只适用于。。。静态(?)对象?请注意,这只可能是因为它是对象文字。对于实例化的对象,情况并非如此(除非该对象是单例对象)。这对我来说非常有用,而这正是我真正需要的。我只是想知道,我只是将对象用作收集失控函数的包装器,这实际上是我第一次尝试组织obj.properties以供以后使用。这和jQuery引用主obj属性时使用的方法是一样的吗?还是这只适用于。。。静态(?)对象?请注意,这只可能是因为它是对象文字。对于实例化的对象(除非该对象是单例对象),情况并非如此。由于
obj
是一个对象文字,因此可以通过名称来引用它(如spender所示)@Justin:我知道。但是,变量可能会被重新分配,但事实并非如此。由于
obj
是一个对象文字,因此可以通过名称来引用它(如spender所示)@Justin:我知道。但是,可能会重新分配变量。