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

js arguments对象的问题
function A(){
var arg = [];
for(var i=0,len=arguments.length;i<len;i++){
(function(_i){
arg.push(arguments[_i]);
})(i);
}
this.num = new Array(arg);
}
A.prototype.insert = function(index,value){
this.num.splice(index,0,value);
return this.num;
}
A.prototype.get = function(index){
return this.num.slice(index,index+1);
}
var a1 = new A("red","blue","green");
a1.insert(1,"black");
alert(a1.num);

请帮忙看看这段代码的错误~~弹出的结果是0,,,black

------解决方案--------------------

this.num = new Array(arg);
 改成
 this.num = arg ;
------解决方案--------------------
function A(){
var arg = [];
for(var i=0,len=arguments.length;i<len;i++){     //这里的arguments 是 function a()的
(function(_i){
arg.push(arguments[_i]);    //这里的auguments 是 function(_i)的
})(i);
}
this.num = new Array(arg);
}

从你的业务逻辑 我认为你希望 全部处理外层的 arguments

function A(){
var arg = [];
var argms = arguments;
for(var i=0,len=arguments.length;i<len;i++){
(function(_i){
arg.push(argms[_i]);
})(i);
}
this.num = new Array(arg);
}