无法检索回调参数
Not able to retrieve callback parameters
var arr = [1,2,3,4,5,6];
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec.call(this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
function xyz (ele ,x){
alert(x);
alert(ele);
return ele > x;
}
arr.filter2(2,xyz);
直到 1'st 它的 运行 很好但是在将参数传递给回调时... x 被警告为 "undefined" 而 ele = fir
你的回答简单明了:
要么正常调用你的函数,..即
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec(this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
或者,如果您仍然想坚持使用 javascript.call(),那么只需像这样使用它:
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec.call({},this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
call() 和 apply() 是预定义的 JavaScript 函数方法。两种方法都可用于调用函数,并且两种方法都必须将所有者 object 作为第一个参数。
您可以通过单击 here 阅读更多相关信息,并在标题 使用函数方法调用函数
下找到它
var arr = [1,2,3,4,5,6];
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec.call(this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
function xyz (ele ,x){
alert(x);
alert(ele);
return ele > x;
}
arr.filter2(2,xyz);
直到 1'st 它的 运行 很好但是在将参数传递给回调时... x 被警告为 "undefined" 而 ele = fir
你的回答简单明了:
要么正常调用你的函数,..即
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec(this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
或者,如果您仍然想坚持使用 javascript.call(),那么只需像这样使用它:
Array.prototype.filter2 = function(){
var fir = arguments[0];
var sec = arguments[1];
alert(fir);
alert(sec);
var arr2 = new Array();
for(var item=0; item<this.length;item++){
alert(this[item]); // 1 section
if(sec.call({},this[item],fir)){
arr2.push(this[item]);
}
}
return arr2;
}
call() 和 apply() 是预定义的 JavaScript 函数方法。两种方法都可用于调用函数,并且两种方法都必须将所有者 object 作为第一个参数。
您可以通过单击 here 阅读更多相关信息,并在标题 使用函数方法调用函数
下找到它