То, чего вы хотите достичь, может быть сделано, если o.a
содержит ссылку на переменную a
- что, к сожалению, работает только так, как вы хотели бы для переменных, которые передаются по ссылке . Тем не менее, примитивные типы, такие как String
, Number
и Boolean
, передаются значением .
Проверьте примеры ниже:
var a = 1;
var o = { a: a };
a = 2;
console.log(o.a, a);
Также не помогает использовать конструктор объекта, такой как new Number()
, потому что он возвращает ссылку на объект (который передается по ссылке , как вам нужно), но назначает новый чтение значения по-прежнему возвращает примитив (который, опять же, передается значением ):
var a = new Number(1);
var o = { a: a.valueOf() };
a = Number(2);
console.log(o.a, a);
Если вы передадите что-то, что естественно передается по ссылке, ваше ожидание сбудется:
var a = [ 1 ]
var o = { a: a }
a[0] = 2
console.log(o.a[0])