function specialArray(){
//创建数组
var values=new Array();
//添加值
values.push.apply(values,arguments);
//values.push(arguments);
//添加方法
values.toPipedstring=function(){
return this.join("|");
}
//返回数组
return values;
}
var colors=new specialArray('red','yellow','green');
alert(colors.toPipedstring()); // red|yellow|green
有点疑惑为什么不直接用values.push(arguments);
arguments并不是Array类型 即使arguments是Array, values.push(arguments)的结果也不是你想要的 var arguments = ['red', 'yellow', 'green']; var values=new Array(); values.push(arguments); // [ [ 'red', 'yellow', 'green' ] ] console.log(values.length); // 1 console.log(values[0]); ['red', 'yellow', 'green']
上面的values.push(arguments); // [ [ 'red', 'yellow', 'green' ] ] console.log(values.length); // 1这里是关键,可以看出长度为1,也就是说是一个整体,这并不是我们想要的。我们想要的是一个一个的调用。
而apply可以把数组或者arguments对象展开成单个的函数参数