Babel通过_this转换它

时间:2016-07-15 17:47:11

标签: javascript ecmascript-6 webpack babel

我对工具提示进行了引导修改。  并用webpack / babel处理我的js

我的代码的简化可能是:

    $('[data-toggle="tooltip"]').tooltip({
        title: () => {
            return $(this).children('.tooltip-html-content').html();
        }
    });

这应该是元素,bootstrap将调用此函数:

   getTitle: function () {
      var title
        , $e = this.$element
        , o = this.options

      title = $e.attr('data-original-title')
        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)

      return title
    }

重要的一点是:

 o.title.call($e[0])

其中$ e [0]是工具提示dom元素。

好吧,当我使用babel进行处理时,结果会在this之前更改_this,然后才会将_this分配给他认为真实的值。

问题:我可以在babel中避免这种特定功能的转换吗?

=====

基于回复的最终解决方案:

   getTitle: function getTitle() {

1 个答案:

答案 0 :(得分:13)

您使用了箭头功能,根据定义,它会关闭创建它的this

如果您不想要这种行为,请不要使用箭头功能:

$('[data-toggle="tooltip"]').tooltip({
    title: function() {
    // ----^^^^^^^^^^
        return $(this).children('.tooltip-html-content').html();
    }
});

重新编辑:

  

我想使用箭头功能。我更喜欢排除babel而不是排除。

你不能,而不是getTitle,因为它允许你访问该元素的唯一方法是设置this。箭头函数本质上具有固定的this(根本没有一个;它们在创建它们的执行上下文中关闭,这是固定的)。您不能将箭头函数用于您希望调用者确定this的任何函数,例如在这种情况下。

您的选择是修改Bootstrap,还是使用普通功能。后者似乎更合理。