将值设置为引用的 JavaScript 对象

Set value to a referenced JavaScript object

比如我有如下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;

但是,有什么办法可以通过nGlobal改变obj.n的值,而不用提到obj
就像这样:

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

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

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

简答:

No, there is not.

长答案:

  1. In JS primitive types are immutable and passed by values.
  2. JS implements pass-by-value strategy, which means that ALL data is always passed by value (in case if you pass a reference to object - the reference is passed by value)

上述项目的一个重要结果:在 JS 中,无法使用 = 操作更改原始对象。也就是说:当你有一个对象的引用时,你可以修改它,但你不能将一个对象与其他对象交换,这样所有其他引用也 "were modified".

相关:

学分: