将事件处理程序附加到函数

时间:2016-01-28 21:52:17

标签: javascript

在下文中,我将click事件分配给func()。当我加载页面时,会出现警告框。有人可以解释为什么会触发事件吗?幕后究竟发生了什么?当DOM加载时,是否会触发附加到函数的所有事件?

<!DOCTYPE html>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script>
        window.onload = function initialize() {
            func.click += handler();
        }

        function handler(e) {
            alert('clicked');
        }

        function func() {

        }
    </script>
</head>

<body>
</body>

</html>

1 个答案:

答案 0 :(得分:0)

在JavaScript中,函数是一阶公民。意思是,它们就像变量一样。

handler是保存您的功能的“变量”。 handler() 调用函数并在此情况下返回值undefined

func.click 不是一个事件,它只是一个属性。您可以将属性附加到JavaScript中的任何变量/对象。它没有特别的意义。 此外,func.click不存在,因此执行+=可能会给您一个错误,因为它是undefined