将值设置为引用的JavaScript对象

时间:2015-11-02 04:49:19

标签: javascript reference variable-assignment javascript-objects

例如,我有以下JS对象:

var obj = {
    n: 0,
    o: {}
};

var nGlobal = obj.n;
var oGlobal = obj.o;

并且想要使用全局变量以使它看起来像这样:

var obj = {
    n: 5,
    o: {
        x: 7
    }
};

显然,我可以为oGlobal

的属性赋值
oGlobal.x = 7;

但是,有没有办法在不提及obj.n的情况下更改nGlobalobj的值? 就像这样:

console.log(obj); // {n: 1, o: {}}

nGlobal.set(5);
// or
nGlobal.value = 5;

console.log(obj); // {n: 5, o: {}}

1 个答案:

答案 0 :(得分:2)

简短回答:

  

不,没有。

答案很长:

  
      
  1. 在JS中,原始类型是不可变的,并通过值传递。
  2.   
  3. JS实现了按值传递策略,这意味着所有数据总是按值传递(如果您传递对象的引用 - 引用按值传递)
  4.   

上述项目的一个重要结果:在JS中,无法使用=操作更改原始对象。也就是说:您可以在引用对象时修改对象,但不能将其他对象与其他对象交换,以便所有其他引用也“被修改”。

相关:

现金: