core-js 是 polyfill 还是它总是替换函数?

Does core-js polyfill or does it always replace the function?

我有一个需要支持旧版浏览器的 React 项目,我们正在使用 array.find() 和 array.map() 之类的东西。我看到我们的项目已经在 node_modules 文件夹中有 core-js,所以使用它会很好,而不是向项目添加另一个包。

如果我这样导入:

import 'core-js/fn/array/find';

正如此回复中所建议的那样:http://discuss.babeljs.io/t/why-does-array-prototype-find-not-work-with-babel-preset-es2015/46/4 该 polyfill 是否会取代可能已经存在的 array.find 函数?如果它将取代现有功能,是否有任何性能问题或其他原因导致您不想使用这种方法?

core-js 始终替换您导入的函数。

这可能会有问题,我 运行 试图在由加载 zone.js 的框架加载的代码中导入完整的库,这会破坏 zone.js通过替换 zone.js 已经替换的 Promise。

所以现在我使用 core-js 通过执行以下操作来 polyfill 各个函数:

if( ! Array.prototype.includes ) { require( "core-js/fn/array/includes" ); }