我想做这样的事情:
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”,而不是需要的函数。
那么我该怎么做呢?我可以这样做吗?
最佳答案
this
不会是函数
本身,而是调用函数的上下文。如果您命名了函数
,则可以访问该函数的属性(var f
不会设置名称
)。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);
关于javascript - JS,向函数添加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17907480/