0

让我们考虑这个例子: -

function X(){
     var Y = function(arg1,arg2){
              document.write(arguments.length);
              document.write(arg2);
              };
     Y(arguments);
}

x(1,2,3,4,5); 
/*Outputs  1 and undefined respectively. 
  Because here i am actually passing an array like-object  to Y. */

通过在这里使用应用,我得到了想要的结果。

function X(){
     var Y = function(arg1,arg2){
              document.write(arguments.length);
              document.write(arg2);
              };
     Y.apply(this,arguments);
}

x(1,2,3,4,5) //outputs 5 and 2

我想创建一个类似应用的方法,该方法接受一个参数数组并通过将参数作为单独的参数值传递来调用该函数。

喜欢:

var arr=[1,2,3,4];
Y.apply_like_method(arr);
//and returns like Y(1,2,3,4)
4

3 回答 3

1

鉴于此代码:

var arr=[1,2,3,4];
Y.apply_like_method(arr);
//and returns like Y(1,2,3,4)

为了使这项工作:

Function.prototype.apply_like_method = function(args) {
    return this.apply(this, args);
}

免责声明:仅用于说明目的。

换句话说,没有办法.apply()

于 2013-07-14T09:55:00.310 回答
1

只是为了使用 eval 大便和咯咯笑。

function myApply(fun, ar){
  var i, r = [];
  for(i=0; i<ar.length; ++i)
    r[i] = 'ar['+i+']';
  eval('fun('+r.join(',')+');');
}
于 2013-07-15T09:20:57.100 回答
0

您想改用 call 方法。 请参阅 MDN。您所描述的是 call 方法和 apply 方法的混合;您希望能够单独提供参数,但将它们作为数组提供给函数。据我所知,这目前不存在,并且按照最初的预期使用应用/调用会更容易,或者使用 javascript 对象将参数传递给函数。

于 2013-07-14T09:44:28.203 回答