日期:2014-05-16  浏览次数:20399 次

简单的两个JS问题,求指教!!!
1.全局变量时是全局对象window的属性,局部变量是哪个对象的属性?
2.为什么 var task=tasks.concat();//(tasks是一个数组)可以复制数组?说说原理。。。


------解决方案--------------------
Array的concat方法不是复制数组,是连接两个数组并生成一个新数组。
Array.prototype.concat()表象上起到了一个复制数组的作用,实际上它是生成了一个新数组。
JScript code

var a1=[];
var a2=[];
var a3=a1.concat(a2);
alert(a1==a2);
alert(a1==a3);

------解决方案--------------------
其实concat()也不是严格的复制,如果数组里面的元素有对象存在的话就不行了.
JScript code
var arr = [1,{},3]
var arr2 = arr.concat();
alert(arr === arr2)
alert(arr[1] === arr2[1])