0

我想做这样的事情:

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”表示“窗口”,而不是需要的函数。

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

4

1 回答 1

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. Array不过,您可以使用以下命令创建一个.slice()

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

    return _base.apply(this, args);
    
于 2013-07-28T10:59:50.753 回答