无法检索回调参数

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 阅读更多相关信息,并在标题 使用函数方法调用函数

下找到它