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);
}