Привязать свойства объекта к свойствам другого объекта - PullRequest
0 голосов
/ 10 марта 2020

Я хочу создать новый объект, присвоить его свойству некоторые значения из другого объекта, и я хочу «связать» его - как передача по ссылке в C ++.

Так в этом примере ниже:

var object1 = {
    'obj1' : {
    'obj1a' : 'a',
    'obj1b' : 'b'
  },
  'obj2' : {
    'obj2c' : 'c',
    'obj2d' : 'd'
  }
}

var assignObject = {}
assignObject['obj1a'] = object1['obj1']['obj1a']
assignObject['obj1a'] = 'bbb'

console.log('assignObject' + JSON.stringify(assignObject))
console.log('object1' + JSON.stringify(object1))

Всякий раз, когда я изменяю содержимое assignObject['obj1a'], я хочу, чтобы оно отражалось и на object1['obj1']['obj1a'].

var assignObject = {}
assignObject['obj1a'] = object1['obj1']['obj1a']  // this is my idea of 'binding'
assignObject['obj1a'] = 'bbb'  // and updating of assignObject['obj1a']

Печать на консоли:

assignObject{"obj1a":"bbb"}
object1{"obj1":{"obj1a":"a","obj1b":"b"},"obj2":{"obj2c":"c","obj2d":"d"}}

И я хотите напечатать:

assignObject{"obj1a":"bbb"}
object1{"obj1":{"obj1a":"bbb","obj1b":"b"},"obj2":{"obj2c":"c","obj2d":"d"}}

Как я могу сделать это в Javascript? Обратите внимание, что будет несколько параметров, и они будут динамическими c в реальном коде (вложенные объекты неопределенной глубины).

Вот скрипка: https://jsfiddle.net/ha2qcdko/

Спасибо!

1 Ответ

1 голос
/ 10 марта 2020

Если вы получите ссылку object, она будет работать так, как вы ожидаете:

const object1 = {
  'obj1' : {
    'obj1a' : 'a',
    'obj1b' : 'b'
  },
  'obj2' : {
    'obj2c' : 'c',
    'obj2d' : 'd'
  }
}

let assignObject = object1.obj1;
assignObject.obj1a = "bbb";

console.log(object1);

Но если ваша ссылка object1['obj1']['obj1a'], это больше не object, это string.

...