繁体   English   中英

将特定上下文绑定到事件处理程序

[英]Binding an specific context to an event handler

我只是学习JavaScript并从Ninja Secrets书中读取,这就是他将点击事件绑定到按钮的方法。 因此,我只是一个初学者并且学习我想要做的是最好和最终的方式(将按钮处理器添加到按钮)或者他刚用这个作为示例来演示闭包,这不是真实的世界它已经完成。

  <body>
    <button id="test">Click Me!</button>

    <script>
      function bind(context,name){                                 //#1
        return function(){                                         //#1
          return context[name].apply(context,arguments);           //#1
        };                                                         //#1
      }                                                            //#1

      var button = {
        clicked: false,
        click: function(){
          this.clicked = true;
          assert(button.clicked,"The button has been clicked");
          console.log(this);
        }
      };

      var elem = document.getElementById("test");
      elem.addEventListener("click",bind(button,"click"),false);     //#2

    </script>

  </body>

他主要解释这是如何用于教育目的的。 在现代ECMAScript 5中有一个原生的Function.bind (这里的文档),所以你可以这样做:

elem.addEventListener("click", button.click.bind(button), false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM