javascript设置对象相等

时间:2018-01-23 21:57:31

标签: javascript

这是按照我想要的方式工作,但我有点困惑,为什么它有效。

我有两个对象。 将temp对象设置为等于对象A并操纵临时对象。 对象A受到影响。

设置临时对象等于对象B(为什么现在所有三个对象都不相等?) 我操纵临时对象。 对象A不受影响。



var tempObject = {};
var objectA = {A: 1};
var objectB = {A: 3};

$( document ).ready(function() {
    tempObject = objectA; 
    add(tempObject);
    console.log(objectA);
    tempObject = objectB;
    add(tempObject);
    console.log(objectA);  
    
   function add(arr){
     arr.A += 1;
   }
   
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

当你在JavaScript中处理对象时,它始终是引用的。它类似于C / C ++中的指针。

当您将tempObject设置为objectA时,您基本上是说“tempObject现在指向与objectA相同的对象”。因此,如果更改属性为1,则更改两者。

当您将tempObject设置为objectB时,您说“tempObject现在指向与objectB相同的对象”。您没有使用此对象更改任何对象,只有哪个对象tempObject指向。

答案 1 :(得分:3)

当您将tempObject设置为objectB时,它将不再是objectA的引用,现在引用objectB。因此,当您对tempObject进行更改时,objectA不会受到影响,但objectB会受到影响。