我听说可以做这样的事情
this[func].apply(this, Array.prototype.slice.call(arguments, 1));
但是要访问 arguments
对象,我需要位于该函数内部。
那么,例如,如果我在函数 function1
中运行代码,有没有办法获取不同函数 function2
的参数?
整个问题是我想向任何给定元素添加事件。但该元素可能已经附加了另一个事件。因此,例如,如果我将“onclick”事件附加到某个元素,我将执行以下操作:
var event = 'onclick';
if(typeof currentElement[event] === 'function'){
cf = currentElement[event];
f = function(){
cf();
func();
}
}else f = func;
currentElement[event] = f;
现在,新函数和前一个函数这两个函数都被调用。问题在于,此方法传递给前一个函数的参数丢失了。
有谁知道当我们像我的示例中那样动态调用函数时是否可以不丢失参数?
OBS:jQuery 不是一个选项:/
最佳答案
听起来像使用addEventListener会更适合你。它允许您将多个监听器(函数)附加到单个元素:
elem.addEventListener("click", function() {
console.log("click listener 1");
});
elem.addEventListener("click", function() {
console.log("click listener 2");
});
请注意,根据 MDN,IE >= 9 支持 addEventListener
。
如果您确实想继续当前的道路,您可以这样做:
f = function(){
cf.apply(this, arguments);
func.apply(this, arguments);
}
关于javascript - 在另一个函数中获取函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19557172/