javascript - 哪种解决方案更适合将 "this"参数传递给 javascript 事件处理程序

标签 javascript jquery

将 init 函数的 this 参数传递给更改事件处理程序的最佳方法是什么?为什么?

选项 1(使用 that = this)。

SomeObject.prototype.init = function () {
    var that = this;
    this.$element.change(function () {            
        //do some some things with that.
        that.
    });

};

选项 2(使用 event.data )。

SomeObject.prototype.init = function () {

    this.$element.change({object:this }, function (e) {            
        //do some some things with the event data.
        e.data.object.
    });

};

或者另一个(更好的)?

最佳答案

恕我直言,第一个更好一点。第三种方法(如果你可以使用 ECMA5)是

SomeObject.prototype.init = function () {
   this.$element.change(function () {            
       //do some some things with this.
       this.
    }.bind(this));
};

关于javascript - 哪种解决方案更适合将 "this"参数传递给 javascript 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779749/

相关文章:

javascript - 我多次从随机数组中得到 undefined

javascript - js中如何通过key搜索多层嵌套对象

javascript - Angularjs uri组件是如何编码的

javascript - 在 JS 或 Jquery 中将字符串作为命令执行

javascript - setInterval 在第一次迭代后退出。请帮我纠正这个片段?

javascript - 仅在单击父列表项时切换

javascript - 数据表单击 td 或 td 内的(链接)

javascript - jQuery 代码阻止将产品插入数据库

javascript - 查找两个字符之间的文本,并为每个字符执行一些操作

javascript - 如何从 Jquery 中的多选下拉列表中删除选项