如何在事件函数中访问窗口实例

时间:2016-05-10 05:28:52

标签: javascript events

我有以下代码:

<html>
    <body>
        <div>
           <button id="but" >Click me</button>
        </div>
        <script>
            var ele = document.getElementById("but");
            ele.addEventListener('mousemove', myFunction);
            this.model = {
                'a': 'A',
                'b': 'B'
            }
            function myFunction(e) {
                alert(this.model.a);
            }

        </script>
    </body>
</html>

当我将鼠标悬停在按钮上时会抛出错误,因为我无法访问model.athis似乎是指DOME元素。如何在该功能中访问this.model

2 个答案:

答案 0 :(得分:1)

<html>
    <body>
        <div>
           <button id="but" >Click me</button>
        </div>
        <script>

            this.model = {
                'a': 'A',
                'b': 'B'
            }           
            var ele = document.getElementById("but");
            ele.addEventListener('mousemove', e => alert(this.model.a));

        </script>
    </body>
</html>

'this'在JavaScript中以一种非常奇怪的方式工作,它指向我们调用该函数的对象。我认为你可以使用箭头功能来修复它,因为它们在'this'中有更多的传统行为。

答案 1 :(得分:0)

您可以使用窗口对象。 所以你应该将myFunction改为:

Time.zone