core-js / babel-polyfill polyfilled函数显示为[本机代码]

Est*_*ask 2 javascript node.js babeljs babel-polyfill

core-js(例如babel-polyfill)填充的函数显示为本机。

Promise.race.toString() 产生:

function race() {
    [native code]
}
Run Code Online (Sandbox Code Playgroud)

也是Object.values.toString()

虽然它们当然不是浏览器的本机实现。该示例是Babel REPL页面。

开发人员如何通过编程方式检查功能不是本机实现,而是一个模仿本机功能的polyfill(例如,当已知某个特定的polyfill可能在应用程序中引起问题时)?

通常native coderegexp会有所帮助,但事实并非如此。

如何从此类函数中检索源代码?我主要对Node.js感兴趣,但是欢迎跨平台解决方案。

这个技巧到底是怎么完成的?我无法找到任何用于native code搜索core-jsbabel-polyfill源代码。

log*_*yth 5

core-js尝试通过Function.prototype.toString 在此处替换为默认版本的版本来使本机实现的多填充功能以本机方式实现,但如果需要,则允许core-js通过将值设置为来覆盖字符串值fn[SRC]

您可以在此处分配的文件中进一步查看fn[SRC],特别是

if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
Run Code Online (Sandbox Code Playgroud)

如果您TPL在这种情况下检查,则为["function ", "() { [native code] }"],因此在与.join(String(key))您通话时最终得到

function race() { [native code] }
Run Code Online (Sandbox Code Playgroud)

您在输出中看到的。