例如,我有以下的JS对象:设定值引用的JavaScript对象
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: {}}
JavaScript是通过按值,无法通过按引用。赋值给变量永远不会改变另一个变量或属性的值(例外:全局作用域和'with')。 –
@FelixKling更确切地说,对于基元:通过值和非基元:通过引用 – Tushar
@Tushar:不,对象被表示为**引用,但与**通过无关-引用。传递引用和传递值是指变量和参数如何相互关联。它与他们所持有的价值无关。 –