Javascript 如何访问外部对象';来自内部对象的属性?

Javascript 如何访问外部对象';来自内部对象的属性?,javascript,object,Javascript,Object,可以从内部对象的函数访问外部的值吗?有办法吗 var outer = { value: "1", inner: { getValue: function() { return value; // undefined } } } alert(outer.inner.getValue()); // fails 通过javascript规范无法做到这一点。 也许这样: var outer = { value:

可以从
内部
对象的函数访问
外部
值吗?有办法吗

var outer = {
    value: "1",
    inner: {
        getValue: function() {
            return value; // undefined
        }
    }
}

alert(outer.inner.getValue()); // fails

通过javascript规范无法做到这一点。 也许这样:

var outer = {
    value: "1",
    inner: (function(){
        var parent = this;
        return {
            getValue: function() {
                return parent.value;
            }
        }
    }).apply(outer)
}

您可以通过外部对象的引用显式引用外部对象的属性,例如:

var outer = {
    value: "1",
    inner: {
        getValue: function() {
            return outer.value; // 1
        }
    }
}

alert(outer.inner.getValue());

但是,此解决方案没有那么灵活。

无法引用包含对象,因为您的“内部”对象可能有无限多的包含对象。您必须是显式的,并给它一个对父对象的引用

var outer = { ... };

var inner = {
  parent: outer,
  getValue: function () { return this.parent.value() }
}