JS数组的concat、push等方法,操作的是地址指针,而非内存块操作
var a = [{x:1}, {y:1}, {z:3}]; var b = a.concat(['gg', 'ff']); var c = []; c.push(a[1]); console.log(a[1] === b[1]); console.log('--------'); console.log( c[0]=== a[1] );

可以看到,数组的concat方法并没有在内存中重新开辟区域存数组a的三个对象,仅仅是指向a里三个对象的指针,数组的大多数原生方法都是如此,操作地址指针。
-------------------------------------
后补充:这里的操作一词含义模糊,也没想到更好的表述,其实数组的指针没有发生变化的。只需理解代码demo即可。
浙公网安备 33010602011771号