gpt4 book ai didi

javascript - Babel 通过 _this 转换它

转载 作者:数据小太阳 更新时间:2023-10-29 05:47:47 24 4
gpt4 key购买 nike

我对工具提示进行了引导修改。 并使用 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 a 在他将 _this 分配给他认为是真实 this 的值之前。

问题:我可以避免在 babel 中针对这个特定函数进行这种转换吗?

=====

基于响应的最终解决方案:

   getTitle: function getTitle() {

最佳答案

您使用了箭头函数,根据定义,它在创建它的 this 上关闭。

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

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

重新编辑:

I want to use the arrow function. I prefer do a babel exclusion than an eslint exclusion.

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

您的选择是修改 Bootstrap 或使用普通函数。后者似乎更合理。

关于javascript - Babel 通过 _this 转换它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38402305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com