在javascript中访问父对象

在javascript中访问父对象,javascript,Javascript,我有以下javascript代码: var x = { a:1, b : { c : 2, d : //i want value of x.a in here } } 我读过这样访问父属性是完全不可能的。有什么解决办法吗?没有。嵌套对象也不能像在任何其他语言中那样访问其主机 您必须自己显式设置。javascript对象没有父对象,因为您可以进行共享。例如: var a = { x: 42 }; var b = { y: a }; va

我有以下javascript代码:

var x = {
    a:1,
    b : {
        c : 2,
        d : //i want value of x.a in here  
    }
}

我读过这样访问父属性是完全不可能的。有什么解决办法吗?

没有。嵌套对象也不能像在任何其他语言中那样访问其主机


您必须自己显式设置。javascript对象没有父对象,因为您可以进行共享。例如:

var a = { x: 42 };
var b = { y: a };
var c = { z: a };
这里,对象
a
b
c
之间作为子对象“共享”,那么“父对象”或
a
应该是什么?您可以看到共享,因为在执行
b.y.x=99
之后,
c.z.x
也将显示为
99
。可以使用不同的路径访问单个javascript对象

另一方面,DOM对象有一个父对象,因为DOM是一个节点,所以谈论节点的“父对象”是有意义的


如果您将一个DOM节点作为另一个节点的子节点添加,并且该节点已经是DOM的一部分,则该节点将从其所在位置删除,并将其放置在新位置。

不可能,但您的案例可以这样写:

var x = new function(){
   this.a = 1;
   this.b = {
      c: 2,
      d: this.a
   }
};
试试这个:

var x = {
          a: {
               c: 1
          },
          b: {
               c: 2  
          }
}

x['b']['d'] = x['a'];

应该有效;)

javascript中不存在父引用。您可以做的是构建一个helper递归函数,该函数将解析所有对象并添加对父对象的引用。这将构建一个更复杂的对象


下面的视频演示了如何:

嵌套对象可能是多个其他对象的一部分,因此没有单一父对象。您可能希望使用类似于:或类似于:这不一样。检查控制台是否存在以下情况:
x.a=5;控制台日志(x.b)
@abhitalks当然不会改变,因为
a
存储原语类型