繁体   English   中英

JavaScript - 获取嵌套属性的父对象

[英]JavaScript - Get nested property's parent object

假设我有一个这样的嵌套对象:

let object = {
  another : {
    yet_another : {
      last_one : {
      some_property : [1,2,3]
      }
    }
  } 
}

我可以像这样访问some_property

object.another.yet_another.last_one.some_property;

假设我指的是变量中的这个对象:

var x = object.another.yet_another.last_one.some_property;

如果我只能访问x变量,我怎么知道some_property的父对象是什么? 在 JavaScript 中甚至可能吗?

不,这不可能。 对象本身没有“父对象”。 观察:

let object = {
  another : {
    yet_another : {
      last_one : {
        some_property : [1,2,3]
      }
    }
  } 
};

let another_object = {
  foo: object.another.yet_another.last_one.some_property
};

怎么办? 该数组现在同样是两个对象的成员。

不,因为在执行以下行时;

var x = object.another.yet_another.last_one.some_property;

然后将x分配给some_property的值, some_property而已。

根据您对答案的评论,您的(实际)问题的解决方案应该是不要移动物体。 在维护应用程序时,可变性可能非常昂贵(最终令人望而却步)。

只需创建新对象:


const firstObject = {
   prop1: 'some value',
   prop2: {
      prop3: 'some value',
      prop4: [1,2,3,4]
   }
}

// don't do
const secondObject = { }
secondObject.prop2.prop4 = firstObject.prop2.prop4

// instead do
const secondObject = { ... }
const newObject = {
  ...secondObject,
  prop2: {
   ...secondObject.prop2,
   prop4: firstObject.prop2.prop4
  }
}

您可能想研究一下 immutablejs。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM