JS,为函数添加参数

时间:2013-07-28 10:52:44

标签: javascript

我想做这样的事情:

var f = function(){
    var args = arguments;
    args.push(this._caller);
    this._base(args);
};

f._caller = someObject;
f._base = function(x,y,z){ alert(x+':'+y+':'+z);};

f(y,z);

基本上 - 我想给函数一些内部参数,但仍然应该用它的参数调用函数,用户在调用这个函数时不应该知道这个参数。

问题是,在函数体中'this'将意味着'Window'而不是需要的函数。

那我该怎么做呢?我可以这样做吗?

1 个答案:

答案 0 :(得分:2)

  1. this不是function本身,而是调用函数的上下文。如果您为其命名,则可以访问function的属性(var f未设置name)。

    var f = function fn() {
        var _caller = fn._caller;
        var _base = fn._base;
        // ...
    };
    
  2. 方法arguments.push()不存在,因为arguments实际上不是Array。但是,您可以使用.slice()

    从中创建Array
    var args = Array.prototype.slice.call(argument, 0);
    args.push(_caller);
    
  3. 要设置上下文(this)并传递Array个参数,请使用Function#apply

    return _base.apply(this, args);