变量引用问题

时间:2011-06-18 08:16:19

标签: javascript reference

为什么每次对数组的一个引用进行更改时,它都不会对另一个引用进行更改,尽管两者都指向同一个对象。

示例:

myArray = new Array(5,5,5);
Array2 = new Array(7,7,7);
alert(myArray)  // still equals 5,5,5,`

4 个答案:

答案 0 :(得分:1)

这就是实例的含义。 Array构造函数。您可以使用关键字new创建实例。因此,使用var myArr = new Array(5,5,5)变量myArr是对Array 构造函数创建的实例('construct')的引用。

对于字符串,使用literals的数组和对象也会创建实例,顺便说一下:

var myArr = [5,5,5],
    myStr = '[5,5,5]',
    myObj = {myArr:[5,5,5]};

答案 1 :(得分:0)

通过说new Array()你正在创建一个全新的数组对象,与第一个无关。这就好像有两个苹果。吃一个对另一个没有影响。

答案 2 :(得分:0)

你想在这里问什么?它仍然等于5,5,5,因为那是你引用的数组!因此,myArray.toString()会产生5,5,5,这正是您收到警报的结果。

您正在实例化两个不同的对象,因此它们的行为与预期的方式相同。如果这就是你要问的话,他们永远不会相互影响。

答案 3 :(得分:0)

您似乎对引用的工作方式存在一些误解。在您的示例中,您创建了两个不同的对象,并且有两个引用这些对象的变量。对于要在另一个变量上反映的变量,您需要两个指向同一对象的变量,例如:

myArray = new Array(5);
myArray2 = myArray; // Now we have two variables pointing to same object
myArray2[2] = 4;
if (myArray[2] == 4) alert("Same value");