对象引用

2016-07-15  本文已影响0人  沐浴残秋

concat方法拷贝原数组

对象引用(非对象直接量):concat方法会复制对象引用放到组合的新数组里,原数组和新数组中的对象引用都指向同一个实际的对象,所以,当实际的对象被修改时,两个数组也同时被修改.

第一个栗子

var arr1 = [1, 2, {a: 'test'}]
var arr2 = ['a', 'b', 'c']

var output = arr1.concat(arr2)
console.log(output) // output[2].a == 'test'
setTimeout(function(){
       arr1[2].a = 'has changed'
       console.warn(output)  //output[2].a == 'has changed'
}, 5000)

第二个栗子

var arr1 = [1, 2, 3]
var arr2 = ['a', 'b', 'c']

var output = arr1.concat(arr2)
console.log(output) 
setTimeout(function(){
     arr1[2] = 99
     console.warn(output)      //output值并不会改变
 }, 5000)

面试时被问到过的一道题,记忆犹新啊(为什么我没早看到这篇文章)。变量、对象傻傻搞不清楚。

上一篇下一篇

猜你喜欢

热点阅读