例如,我有以下的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:不,對象被表示爲**引用,但與**通過無關-引用。傳遞引用和傳遞值是指變量和參數如何相互關聯。它與他們所持有的價值無關。 –