在webkit中对原生JavaScript方法使用apply/call
using apply/call on native JavaScript methods in webkit
我正试图通过应用下面的代码调用addEventListener,但我在webkit的控制台中得到"TypeError: Type error"。
addEvent = (function (handler) {
return function (element, event, fn) {
handler.apply(element, [event, fn, false]);
};
}(addEventListener || attachEvent));
我已经尝试了apply和call调用方法,但无济于事。我是否错过了一些明显的东西,或者试图做一些我还不知道的原因不允许的事情?
另一篇文章讨论了这一点,但不完全是我如何尝试使用它;在WebKit中使用本地代码函数作为JavaScript对象
完成此操作的另一种方法(如Crescent Flash所述)如下:
addEvent = (function () {
return addEventListener ?
function (element, event, fn) {
element.addEventListener (event, fn, false);
} :
function (element, event, fn) {
element.attachEvent ('on' + event, fn);
};
}) ();
然后可以扩展以减少两个事件模型之间的其他差异。
相关文章:
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 为什么bind()或apply()在这里不起作用,而call()起作用
- ECMAScript 5之前的Javascript-bind()/如何使用apply()或call()进行模拟
- 使用 .call/.apply 隐藏类方法
- 使用 apply() 与 call(),在这种情况下使用哪一个
- 了解 Javascript 中 .call 和 .apply 的行为
- .call/.apply 为此设置一个数字,而不是作为原始值
- D3 的 .call() 返回“无法读取未定义的属性'apply'”
- 避免使用 .bind() 的 .call() 和 .apply()
- JavaScript call() 和 apply() 通过实现的区别
- 在循环内部调用Function.prototype.call.apply
- 使用js-apply-and-call创建一个webtrend函数来消除重复
- 在setTimeout上使用.apply或.call——如何以跨平台的方式获得这个上下文
- apply() / call() vs [function]() in jquery
- 如何使用闭包的apply/call通过嵌套对象传递变量
- 为什么的拼接.Apply (arguments, 0) ' failed while '拼接.call(argument
- 为什么.call和.apply比JavaScript中直接调用函数要慢?
- 使用JavaScript中的call()或apply()返回值
- 当使用apply()和call()方法很容易继承时,为什么人们在javascript中使用prototype ?
- 在webkit中对原生JavaScript方法使用apply/call