我想做这样的事情:
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'而不是需要的函数。
那我该怎么做呢?我可以这样做吗?
答案 0 :(得分:2)
this
不是function
本身,而是调用函数的上下文。如果您为其命名,则可以访问function
的属性(var f
未设置name
)。
var f = function fn() {
var _caller = fn._caller;
var _base = fn._base;
// ...
};
方法arguments.push()
不存在,因为arguments
实际上不是Array
。但是,您可以使用.slice()
Array
var args = Array.prototype.slice.call(argument, 0);
args.push(_caller);
要设置上下文(this
)并传递Array
个参数,请使用Function#apply
。
return _base.apply(this, args);