JavaScript:在对象函数和绑定事件中使用THIS

时间:2017-04-12 13:45:34

标签: javascript jquery object events this

我有一个Object,我想在初始化Object时将函数绑定到按钮。

var MyClass = {
    Click: function()   {
        var a   = MyClass;    // <---------------------- look here
        a.Start();
    },
    Bind: function()    {
        var a = document.getElementById('MyButton');
        a.addEventListener('click', this.Click, false);   //<---------- and here
    },
    Init: function()    {
        this.Bind();
    }
}

所以,我是新手使用它而且我不知道对象是否可以像这样声明(在单击按钮后应该在Click()函数内完成):

这是一种不好的做法吗?在这里添加事件时,这可能是最佳方式吗?

修改: fiddle

2 个答案:

答案 0 :(得分:0)

对于事件监听器来说,使用jQuery是最简单和最好的,例如,如果你想在用户点击按钮时执行一些.js代码,你可以使用: https://api.jquery.com/click/

我不知道你对.js有多新,但是你应该查阅关于JavaScript和jQuery的codecademy教程。

.click()演示:

https://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_event_click

答案 1 :(得分:0)

首先,您遇到语法错误。 getElementsById()应为getElementById() - 否s。一旦你解决了这个问题,你所拥有的就会发挥作用,但要注意它并不是一个类,而是一个对象。

如果您确实想要将其创建为一个类来维护包含的方法和变量的范围,并创建新实例,则可以这样做:

var MyClass = function() {
  var _this = this;

  _this.click = function() {
    _this.start();
  };      

  _this.start = function() {
    console.log('Start...');
  }
  
  _this.bind = function() {
    var a = document.getElementById('MyButton');
    a.addEventListener('click', this.click, false);
  };
  
  _this.init = function() {
    _this.bind();
  };
  
  return _this;
}

new MyClass().init();
<button id="MyButton">Click me</button>