2017-02-13 270 views
-2

也許問題已經存在,但我沒有找到任何內容,因爲我不知道如何調用此問題。JavaScript變量賦值

我有一個目標函數,並希望對象變量分配到一個變量:

this.myFunction = function() { 
    var selection;    // internal variable 
    selection = this.selection; // both are [0,0] 

    console.log(this.selection); // result: [0,0] 

    selection[0] = 500;   // set internal variable[0] 500 
    console.log(selection);  // result: [500,0] 
    console.log(this.selection); // result: [500,0] <-- expected: [0,0] 
} 

我怎樣才能改變局部變量,而不改變其他?

+2

您需要創建數組的副本。 –

+0

如果你還想要爲對象引用javascript賦值,那麼 – Kaddath

+0

'Arrays是類似列表的對象,其原型具有執行遍歷和變異操作的方法.'這意味着無論何時將一個數組賦值給另一個變量,它只是一個增變器。這不是一個很深的克隆。 –

回答

1

當您撥打selection = this.selection時,您正在複製this.selection值的參考值。因此,當您更改本地變量selection時,您也正在更改this.selection

您必須使用該值的方法slice() to create a new array。像這樣:

selection = this.selection.slice(); 
+0

'selection = this.selection.slice()'作品感謝 –