Maison  >  Questions et réponses  >  le corps du texte

javascript - Concernant le problème de spécification de ceci lors de la liaison d'événements, veuillez aider

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(){
        //    ...
    }
};
阿神阿神2675 Il y a quelques jours788

répondre à tous(1)je répondrai

  • 学习ing

    学习ing2017-06-22 11:55:57

    Pour être honnête, le premier type est très courant, et peu importe si vous l’utilisez trop.

    Bien sûr, si vous aimez la deuxième option, vous pouvez envisager d'utiliser le polyfill de bind (c'est-à-dire d'utiliser call et d'autres méthodes pour implémenter bind lorsqu'il n'y a pas de liaison).

    ps : Dans es6, la fonction flèche n'a pas ce problème, mais tout comme le deuxième cas, elle ne prend en charge que les versions supérieures des navigateurs modernes.

    répondre
    0
  • Annulerrépondre