2017-02-13 228 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()'作品感谢 –