javascript - 将特定上下文绑定(bind)到事件处理程序

标签 javascript

我刚刚学习 JavaScript 并阅读了《Ninja Secrets》一书,这就是他将点击事件绑定(bind)到按钮的方法。因此,由于我只是一个初学者,我想做的学习是这样做的最佳和 final方法(将单击处理程序添加到按钮)或者他只是用这个作为示例来演示闭包,而这并不是真正的方法世界已经完成了。

  <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 中,有一个 native Function.bind (docs here)所以你可以这样做:

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

关于javascript - 将特定上下文绑定(bind)到事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909124/

相关文章:

javascript - 将 Javascript 转换为 C# 问题

javascript - JSON 加载函数从其他程序读取 key

javascript - 使用 D3 在 JSON 中嵌套数组

javascript - 表单在 Bootstrap 模式表单内提交以执行appendTo html表

javascript - 用 JS 读取本地 XML

javascript - 将选择器的日期更改为短月份

javascript - SVG 路径上的 bool 运算

javascript - 如何检查用户是否已经关注 NodeJs 中的其他用户 - Mongoose

javascript - jQuery.ajax() 无法向某些 URL 发送请求,但不会向其他 URL 发送请求

javascript - ReactJS 表单提交 preventdefault 不起作用