Javascript JS,在函数中添加一个参数
我想这样做:Javascript JS,在函数中添加一个参数,javascript,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); 基本上-我想给函数一些内部参数,但仍然应该用它的参数调用函数,用户在调用函数时不应该知道这些参数 问题是,在函数体
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”,而不是需要的函数
那我该怎么做呢?我能做到吗
此
不是函数本身,而是调用该函数的上下文。如果命名函数(var f
未设置名称
),则可以访问该函数的属性
arguments.push()
不存在,因为arguments
实际上不是数组。但是,您可以使用以下方法从中创建数组
:
this
)并传递参数数组,请使用
. 还要注意的是,
arguments
不是一个真正的数组,你不能push
进入它。这不是我使用的“working”的原始示例,它更大,所以我做了这样的更改。感谢您提供的信息,will Know,function.apply也不会有帮助,因为您仍然需要传递这些参数,或者用户应该清楚地写下f.apply(f,…),而我只需要f(…)。更新的代码清楚地显示了我need@DCoder:您可以[].push.call(参数,f.\u调用者)
,因此除了函数#apply?@AndrewYukhymchak之外没有其他方法,或者如果您想指定此
的值。但是.call()
会将数组作为单个参数的值传递。。。这不是我想听到的答案。泰。关闭
var f = function fn() {
var _caller = fn._caller;
var _base = fn._base;
// ...
};
var args = Array.prototype.slice.call(argument, 0);
args.push(_caller);
return _base.apply(this, args);