JavaScript - Получить родительский объект вложенного свойства - PullRequest
0 голосов
/ 13 февраля 2020

скажем, у меня есть вложенный объект, подобный этому:

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;

Как я могу определить родительский объект some_property, если у меня есть доступ только к переменной x? это вообще возможно в JavaScript?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2020

Нет, потому что при выполнении следующей строки:

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

тогда вы присваиваете x значение some_property, ничего более.

0 голосов
/ 13 февраля 2020

Исходя из вашего комментария к ответу, решение вашей (реальной) проблемы должно заключаться в том, чтобы не перемещать объекты. Изменчивость может быть очень очень дорогой (в конечном итоге, чрезмерно), когда речь идет о поддержке приложения.

Просто создайте новые объекты:


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
  }
}

Возможно, вы захотите взглянуть на неизменный js.

0 голосов
/ 13 февраля 2020

Нет, это невозможно. У объекта нет «родителя» как такового. Наблюдайте:

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

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

Что теперь? Массив теперь в равной степени является членом обоих объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...