关于事件绑定时指定this的问题,求助

function Tab($selector){
    var _this = this;
    
    //    这种可以保证this正确,但是这样写很累赘
    $selector.on("click", function(){
        _this.switchIndex();
    }); 
       
    //    不兼容ie某些浏览器
    $selector.on("click", this.switchIndex.bind(this));
    
    //    这种方式绑定会导致switchIndex内部的this为$selector,除了上面那些,
    //    还有其他比较自然的方式吗?
    $selector.on("click", this.switchIndex);
}
Tab.prototype = {
    switchIndex: function(){
        //    ...
    }
};
阅读 2.1k
1 个回答

讲真,第一种,很常见了,用多了也没啥。

当然,如果喜欢第二种,可以考虑用bind的polyfill(即在没有bind的情况下利用call等方法来实现bind)。

ps: es6的话,箭头函数就没有这种烦恼,但正如第二种的情况,只支持高版本现代浏览器。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题