如何阅读“本机代码”JavaScript 函数?

IT技术 javascript
2021-02-07 14:32:42

有什么办法可以看到JavaScript本机代码的声明吗?每当我尝试在 Chrome 或 Firefox 中查看本机功能时,它都会显示“ native code”:

> String.fromCharCode
function fromCharCode() { [native code] }

这是什么意思,是否有任何工具可以帮助我阅读实际代码?

3个回答

Chrome 或 Firefox 之所以说代码是原生的,是因为它确实是原生的——WebKit 和 Firefox 开发人员已经用 C 或 C++ 编写了该功能,而不是 JavaScript。但是,如果您想查看实际代码,可以查看ChromiumFirefox的源代码库

有没有办法查看 Safari 的原生 webkit 代码?我正在调试 webkitAudioContext (HTML5 WebAudio API) 的问题。处理 ScriptProcessorNode,在 Chrome 和 Firefox 中工作正常,在 Safari 中表现怪异。由于 Safari 代码未打开,是否可以使用类似的方法进行调试ptrace
2021-03-15 14:32:42
我同意,但我想也许有一些扩展可以为我做到这一点。我可以查看文档,但我一直在寻找捷径。
2021-03-24 14:32:42

不在 JavaScript 环境中,但您可以查看开源实现的源代码。

谷歌 V8:http : //code.google.com/p/v8/source/browse

Mozilla SpiderMonkey:https : //developer.mozilla.org/en/SpiderMonkey

这非常有用,但我正在查看控制台或其他东西。一条捷径。去文档并搜索它很烦人。总之谢谢你的回复。
2021-04-03 14:32:42

Firefox 现在支持通过标准开发工具检查“[本机代码]”对象。

要查看它的实际效果:

  1. 更新 Firefox(绝对适用于 v68+,也可以适用于旧版本)
  2. 打开开发工具
  3. 转到控制台
  4. 输入本机对象的名称,例如“文档”
  5. 点击返回
  6. 对所有这些小下拉箭头发疯

FireFox - 检查“本机代码” - 文档对象

不幸的是,Chrome 仍然返回ƒ Document() { [native code] }

Chrome - 不要检查“本机代码” - 失望

我同意贝尔吉的观点。我使用了 FF 80,运行Number.prototype.constructor.toString()并得到了"function Number() { [native code] }"输出。
2021-03-15 14:32:42
这并没有显示函数的源代码,它只是显示了函数对象的对象属性console.dir(Document)
2021-04-04 14:32:42