具有native和lambda函数的事件

Sim*_*mon 3 javascript javascript-events

而是一个关于javascript事件的技术问题:

为什么

window.onmousewheel = console.log;
Run Code Online (Sandbox Code Playgroud)

扔了Uncaught TypeError: Illegal invocation,而

window.onmousewheel = function (e) {console.log(e); };
Run Code Online (Sandbox Code Playgroud)

按预期工作并将事件打印为字符串?为什么console.log在分配时window.onmousewheel,不仅仅使用lambda表达式之类的参数调用?

西蒙

Esa*_*ija 7

当没有显式接收器调用函数时,接收器window(或更一般地说是全局对象)或undefined取决于严格性.引用的函数console.log要求其this值是实例Console.

它通常不在用户代码中完成,但您也可以保护您的方法免受泛型调用:

MyClass.prototype.method = function() {
    if( !( this instanceof MyClass ) ) {
        throw new Error("Invalid invocation");
    }
};
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

101 次

最近记录:

13 年,1 月 前