gpt4 book ai didi

javascript - core-js/babel-polyfill polyfill 函数显示为 [native code]

转载 作者:搜寻专家 更新时间:2023-11-01 00:16:56 31 4
gpt4 key购买 nike

使用 core-js 填充的函数(例如,babel-polyfill)显示为原生。

Promise.race.toString() 产生:

function race() {
[native code]
}

Object.values.toString()也是如此。

虽然它们肯定不是浏览器的 native 实现。例子是 Babel REPL页面。

开发人员如何以编程方式检查函数不是 native 实现而是模仿 native 函数的 polyfill(例如,当已知特定的 polyfill 可能会导致应用程序出现问题时)?

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

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

这个技巧究竟是怎么做到的?我在 core-jsbabel-polyfill 源代码中找不到native code 搜索。

最佳答案

core-js 尝试通过替换 Function.prototype.toString here 使其 polyfilled 功能看起来像 native 实现的一样有一个回退到默认版本的版本,但允许 core-js 在需要时通过在 fn[SRC] 处设置一个值来覆盖字符串值。

你可以在那个文件中看到更远的地方 here它分配 fn[SRC],特别是

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

如果您检查 TPL,在这种情况下它是 ["function ", "() { [native code] }"],所以当使用 调用时.join(String(key)) 你最终得到了

function race() { [native code] }

您在输出中看到的。

关于javascript - core-js/babel-polyfill polyfill 函数显示为 [native code],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058945/

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