我希望能有兩個引用相同的原始值,並且經由一個完成的任何變化應該反映到其他的「神奇」 - 即,使用C代碼作爲一個例子:Javascript:兩個引用同一個原語,同時改變?
// (C code):
int value = 0;
int *p1 = &value;
...
int *p2 = &value;
*p2 = 1;
...
printf("%d", *p1); // gives 1, not 0
唯一到目前爲止,我已經找到了通過使用額外對象間接尋址的方法:
var a = { valueWrapper: { num: 1, str: 'initial' } };
var b = a;
// change a
a.valueWrapper.num = 2;
a.valueWrapper.str = 'changed';
// show b
console.log(b.valueWrapper.num);
console.log(b.valueWrapper.str);
// outputs:
//
// $ node test.js
// 2
// changed
有沒有更簡潔的方法?
你'valueWrapper'中間人。如果一個對象字面值被賦值給'a'並且'a'被賦值給'b',那麼這兩個變量將共享一個對同一個對象的引用。 –
但是,我對基元提出了問題:「兩個引用同一個基元」。 – angularJsNewbie
事實上,但是'a = {num:1,str:「initial」}'會有什麼錯?兩個基元都將在所有引用與'a'相同的對象的變量之間共享。換句話說,你只需要一個包裝。 –