介绍
@gerhobbelt/babel-plugin-array-includes 是一个 Babel 插件,可以将代码中的 ES6 中的 Array.prototype.includes()
转化为 less-efficient 的判断方式,可以解决一些非常奇怪的问题,特别是在 IE11 下使用时。本文将为您介绍该插件的使用方法。
安装
--- ------- -- ---------------------------------------
用法
配置 Babel
在 Babel 配置文件 .babelrc
中添加以下内容:
- ---------- - ----------------------------------------- - -
这将会安装并且启用 @gerhobbelt/babel-plugin-array-includes
插件。
效果演示
例如,下面这行代码:
--- --- - --- -- --- -----------------------------
将会被转化为如下代码:
--- --- - --- -- --- -------------------------- --- ----
在 IE11 下,原本可以正常工作的 Array.prototype.includes()
会出现一些奇怪的问题,这种情况下,以上转化后的代码可以解决这些问题。
配置选项
@gerhobbelt/babel-plugin-array-includes 插件有两个可选的配置选项。
functionName
该选项用于定义替换的方法名,默认为 indexOf
。例如:
- ---------- - ------------------------------------------- - --------------- ------------ -- - -
将会把 Array.prototype.includes()
转化为 arrIndexOf()
方法。
allowArrayLike
该选项默认为 false,如果设置为 true 的话,将会在以下方法调用中使用该替换方式:
arr.includes()
对数组的调用Array.prototype.includes.call(obj, el)
call
、apply
和bind
方法 (第一个参数为对象且该对象有length
属性)
例如:
- ---------- - ------------------------------------------- - ----------------- ---- -- - -
将会把以下代码:
-------- ------------ - ----------------------------------------------- ---- - ------ -- ---
转化为:
-------- ------------ - --------------------------- --- ---- - ------ -- ---
总结
通过插件 @gerhobbelt/babel-plugin-array-includes 可以解决 IE11 下使用 Array.prototype.includes() 出现的问题。您也可以通过配置选项来自定义替换方法和扩展允许替换的情况。如果有类似的问题,建议可以使用该插件。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f03de2c403f2923b035be1f