定義
- 傳值(Call by value):在 JavaScript 中的純值 是傳值。(傳過去以後就沒有任何關聯性)
- 傳參考/傳參照(Call by reference):傳遞給函式的是它實際參數的隱式參照,而不是實際的拷貝。
- 傳共用物件(Call by sharing): a 與 b 是共用同一個物件內容,若 b 修改了物件內容,則 a 也會被修改成同樣內容(物件是共用的,沒有拷貝)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // 傳值 var person = '小明'; // 純值 var person2 = person; person2 = '杰倫'; console.log(perosn, person2) // 小明,杰倫 //傳參考 var person = { name: '小明' }; var person2 = person; perosn2.name = '杰倫'; // 改變物件內容 console.log(perosn, person2); console.log(perosn === person2); // 杰倫,杰倫 // true
|
More info: 傳值、傳參考
應對方式:Object.assign
操作測試
1 2 3 4 5
| openModal(item){
//this.tempProduct= item; //因為物件傳參考的特性,直接用item會與tmepProduct相同 this.tempProduct= Object.assign({},item); //可採用es6語法,將item傳自獨立的空物件裡,才不會互相渲染 },
|
無法直接指定匯入變數中,因傳參考的特性會互相渲染,需將item傳入空物件裡才能順利使用。