阅读JavaScript本机代码


76

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

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

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



Answers:


88

Chrome或Firefox之所以说该代码是本地代码,是因为它确实是本地代码-WebKit和Firefox开发人员已使用C或C ++(而非JavaScript)对该功能进行了编码。但是,如果您想查看实际的代码,则可以查看ChromiumFirefox的源存储库。


17
我同意,但我认为也许可以为我做些扩展。我可以查看文档,但我一直在寻找快捷方式。
emphaticsunshine '02

有没有办法研究Safari的本机Webkit代码?我正在调试webkitAudioContext(HTML5 WebAudio API)的问题。处理ScriptProcessorNode可以在Chrome和Firefox中正常工作,并且在Safari中表现异常。由于Safari代码未打开,是否可以使用类似的方法进行调试ptrace
单身人士


0

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

要查看实际效果:

  1. 更新Firefox(绝对可以在v68或更高版本上运行,也可以在较早的版本上运行)
  2. 打开开发工具
  3. 转到控制台
  4. 输入本机对象的名称,例如“文档”
  5. 命中回报
  6. 在所有这些小的下拉箭头上发疯

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

Chrome仍会返回ƒDocument(){[本地代码]}不幸的是,。

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


1
这没有显示函数的源代码,只是显示了函数对象的对象属性console.dir(Document)
Bergi

我同意贝尔吉。我使用FF 80,运行Number.prototype.constructor.toString()"function Number() { [native code] }"作为输出。
Polywhirl先生20年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.