在这个例子中,似乎我们可以使用变量(此处为“second”)来填充数组myArray
,就好像second
是myArray
的“引用”:这真的发生在这里吗?
var myArray = [];
var second = myArray;
second.target = … //we fill the "second" variable
second.offsetX = …
second.offsetY = …
var target = myArray.target; //then we retrieve the result from myArray
if (target) {
由于
答案 0 :(得分:2)
第二个是myArray的“参考”:这真的发生在这里吗?
是的。
JavaScript中的类似对象的数组传递并通过引用分配 。
在您的示例中,myArray
和second
都指向内存中的同一个对象。
答案 1 :(得分:1)
是的,这正是这里发生的事情。当您(例如)将新元素推送到second
时,您可以稍后从myArray
阅读它们。
offsetX
?
答案 2 :(得分:1)
这称为shallow copy
。您有一个对原始数组(var second = ...
)的引用(var myArray = ...
),它们都指向JavaScript虚拟机内存中的相同内存。
这样您就可以second
或myArray
访问数组。
答案 3 :(得分:1)
var myArray = [];
这只是一个数组声明它与var myArray=new Array();
关于阵列引用:
var second = myArray;
我们将变量指向myArray内存位置。这里将创建指向myArray内容的新Object。所以,如果你阅读第二个内容。它会读取myArray。但是,你编辑/更新第二个内容,myArray的内容将被复制到第二个,它将被修改。正如Bakudan所说,它是浅层副本。请参阅下面的示例
var myArray=[10,20,30];
var second =myArray; //second will contain 23,45 and 100.
如果我们第二次更新数组,second=[100,200,300]
原始内容将被清理,并将写入100,200,300。
要在不删除原始内容的情况下将内容附加到数组,我们需要使用函数push,如下所示:
second.push(100);second.push(200),second.push(300);
现在,第二个内容将是10,20,30,100,200,300。
对象属性:
second.target = "testString";
second.offsetX =87;
second.offsetY =56;
这是对象属性的创建。它与
相同second={"target":"testString","offsetX":87,"offsetY":56};
如果您想访问值87,可以访问second.offsetX or second[offsetX]
。
有关java脚本的更多信息可以使用here。