变量引用更改

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

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

  • 原始数据类型(数字,字符串和布尔)不改变,如果你改变它的引用,而复合数据类型确实改变。

    http://msdn.microsoft.com/en-us/library/ie/7wkd9z69(v=vs.94).aspx


    在JavaScript中, Arrays & Objects通过引用传递,所以将它们更改为一个地方会影响其他人。

    numberstring这样的原始number是通过值传递的,所以在一个地方改变它们不会影响到其他地方。

    基元

    var a,b;
    a=10;
    b=a;
    

    所以ba就像波纹管结构一样

    a ---1000----> [10] a is pointing to some location(lets 1000) which have value 10
    b ---1004----> [10] b is pointing to some location(lets 1004) which have value 10
    

    让我们增加a1现在的价值将在地方改变1000

    a ---1000----> [11]
    b ---1004----> [10]
    

    在数组和对象中

    obj1 = {}; // obj1 has a reference
    

    obj1的结构像波纹管

    ------->1000--------->[{}]
    obj1 -------1004----->[1000] //this '1000' is a reference which has a `{}` at it's place 
    

    这条线

    obj2 = obj1;
    

    在这行之后obj2obj共享同一个引用-------> 1000 ---------> [{}] obj1 ------- 1004 -----> [1000] obj2 ------- 1008 -----> [1000]

    obj1.ab = 5; 
    

    这一行将添加一个名为ab的字段到obj1的引用

    ------->1000--------->[{ab:5}]
    obj1 -------1004----->[1000]
    obj2 -------1008----->[1000]
    

    而且因为obj1obj2具有相同的参考,所以你得到了两个字段ab

    obj1      // Object {ab: 5}
    obj2      // Object {ab: 5}
    

    注意: -赞赏任何改进。


    arr1包含空列表的引用。 然后arr3接收相同列表的引用,arr2是同一列表的引用。 所以当你制作arr1.ab = 5时,你在列表中添加了一个名为'ab'的项目并给出了值5.但是由于arr2和arr3指向同一个列表,你将得到相同的值。

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

    上一篇: Variable References Changing

    下一篇: OO Javascript copy of object