例如,我有以下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
的情况下更改nGlobal
到obj
的值?
就像这样:
console.log(obj); // {n: 1, o: {}}
nGlobal.set(5);
// or
nGlobal.value = 5;
console.log(obj); // {n: 5, o: {}}
答案 0 :(得分:2)
简短回答:
不,没有。
答案很长:
- 在JS中,原始类型是不可变的,并通过值传递。
- JS实现了按值传递策略,这意味着所有数据总是按值传递(如果您传递对象的引用 - 引用按值传递)
醇>
上述项目的一个重要结果:在JS中,无法使用=
操作更改原始对象。也就是说:您可以在引用对象时修改对象,但不能将其他对象与其他对象交换,以便所有其他引用也“被修改”。
相关:
现金: