OO Javascript copy of object
本问题已经有最佳答案,请猛点这里访问。
我有一个关于javascript如何使用以下示例代码复制对象的问题:
1 2 3 | var blue = {a:1}; var yellow = blue yellow = 3; |
在这种情况下,蓝色的值不会作为a=1的对象受到影响。但是,当这样写的时候:
1 2 3 4 | var blue = {a:1}; blue.b = 2; var yellow = blue yellow.c = 3;` |
在这种情况下,console.log(蓝色)将显示蓝色,它的对象中还有一个额外的c:3。当
当为变量赋值时,该变量以前拥有的任何值都将消失。这就是你的第一个样本。
当您将一个变量赋给一个对象的值,然后修改该对象(将其属性设置为某个值)时,仍然有该变量指向该对象。你的第二个样本就是这样。
在第二个样本中发生的另一件事是,
在第一种情况下:
1 2 3 4 | var blue = {a:1}; var yellow = blue; // yellow references blue... yellow = 3; // but not anymore. Now it's just a number. |
在第二个方面:
1 2 3 4 5 | var blue = {a:1}; blue.b = 2; var yellow = blue // yellow references blue yellow.c = 3; // and still does, so yellow.c and blue.c are the same` |
在JS中,所有分配都是按值完成的。
但是,对于对象,该值是一个引用。
也就是说,如果使用