JavaScript shift()方法是否返回元素的引用或副本?

JavaScript shift()方法是否返回元素的引用或副本?,javascript,reference,pass-by-reference,Javascript,Reference,Pass By Reference,假设我有如下声明的树对象: var obj1 = new Car(); var obj2 = new Car(); var obj3 = new Car(); 我把它们放在一个数组中 var myArray = []; myArray.push(obj1); myArray.push(obj2); myArray.push(obj3); 最后,如果我确实这样做: var firstElement = myArray.shift(); 这让我想知道: firstElement是对obj1的引

假设我有如下声明的树对象:

var obj1 = new Car();
var obj2 = new Car();
var obj3 = new Car();
我把它们放在一个数组中

var myArray = [];
myArray.push(obj1);
myArray.push(obj2);
myArray.push(obj3);
最后,如果我确实这样做:

var firstElement = myArray.shift();
这让我想知道:


firstElement是对obj1的引用还是它的副本?例如,如果我更改了firstElement的某些属性,它会影响obj1变量吗?

通过引用,请查看此JSFIDLE以获取证据:

HTML:


回答:它是元素的(副本)。但要素是什么?与Java一样,JavaScript中的每个值要么是一个原语,要么是一个引用(指向对象的指针)。“对象”不是JavaScript中的值。对象仅通过引用(指向对象的指针)进行操作

假设我有如下声明的树对象:

var obj1 = new Car();
var obj2 = new Car();
var obj3 = new Car();
var obj1=新车();var obj2=新车();var obj3=新车()

我把它们放在一个数组中

var myArray = [];
myArray.push(obj1);
myArray.push(obj2);
myArray.push(obj3);
不。实际上您有三个引用(指向对象的指针),它们指向您创建的对象。将这些引用放入数组中

firstElement是对obj1的引用还是它的副本?例如 如果我更改firstElement的某些属性,它会影响obj1吗 变量


firstElement
是参考文件
obj1
的副本。如果您更改了由
firstElement
指向的对象的某些属性,那么它当然可以通过
obj1
可见,因为它们指向同一个对象。

如果它是一个对象,它就是一个副本。。。参考文献的一部分。但是你所要做的只是
未定义的
,因为你没有创建任何对象。好吧,你是对的!我会修好的!