OO对象的Javascript副本

这个问题在这里已经有了答案:

  • Javascript的参考与价值[复制] 4个答案

  • 在JS中,所有的任务都是按价值完成的。

    但是,在对象的情况下,该值是一个参考。

    也就是说,如果您使用yellow = blueyellowblue将在内存中包含相同的对象。 所以你不能修改另一个。


    在第一种情况下:

    var blue = {a:1};
    var yellow = blue;   // yellow references blue...
    
    yellow = 3;          // but not anymore. Now it's just a number.
    

    在第二:

    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`
    

    当你给一个变量赋值的时候,这个变量以前的任何值都消失了。 你的第一个样本就是这样。

    当您将一个变量赋值给一个对象的值,然后修改该对象(将其设置为某个值的属性)时,您仍然拥有指向该对象的变量。 这就是你的第二个样本。

    第二个示例中发生的另一件事是, blueyellow指向同一个对象,因此通过blue修改与通过yellow修改相同,并且在这两种情况下效果“适用于”两个变量(它始终是同一个对象)

    链接地址: http://www.djcxy.com/p/20981.html

    上一篇: OO Javascript copy of object

    下一篇: Assigning objects in Javascript: shallow or deep copy?