如何获取原生JavaScript函数的源代码?

33

在控制台中,它显示为本地函数,但我想知道它们是如何构建的。例如,按空格键滚动页面时执行的代码是什么?这些信息将教会我很多,并且我可以使我的函数更加有效。


2
滚动页面的代码不会是JavaScript,而是C++或者浏览器实现的任何语言。但是有一些开源浏览器,所以你可以下载源代码。 - nnnnnn
重复的问题?http://stackoverflow.com/questions/22370735/emulate-spacebar-scroll-function/22370829?noredirect=1#comment34005844_22370829 - Jorg
哈哈,那是我的问题。但我不仅问空格键滚动功能,而且所有的JavaScript代码。 - jscripter
这个回答解决了你的问题吗?如何查看内置JavaScript函数的源代码? - Nico Haase
显示剩余2条评论
4个回答

22
  1. 选择一个浏览器
  2. 确保它是开源的
  3. 深入挖掘其源代码

一些存储库包括:

请注意,JavaScript 本地函数通常不是用 JavaScript 编写的(大多数情况下为 C 或 C++)。 它们只是通过 API 向 JS 公开。

还要注意,当按下空格键时滚动页面的代码甚至不是向 JS 公开的函数。


1
所以当我记录 toString 时,输出是 ƒ toString() { [native code] } 的原因是因为这些本地函数大多是用 C++ 或 Torque(有些是用 v8)编写的,它们被编译成机器代码,因此不会显示该机器代码,而是输出 [native code] - Caleb Taylor

15

虽然这不会显示实际的源代码,但如果您对许多本地 JavaScript 函数的实现方式感兴趣,您可以查看它们所基于的规范:

标准 ECMA-262


3
这个规格看起来很有趣。 - jscripter

3

V8是什么?

  • V8是谷歌的开源JavaScript引擎。
  • V8按照ECMA-262规范实现了ECMAScript。
  • V8用C++编写,并被谷歌的开源浏览器Google Chrome使用。
  • V8可作为独立程序运行,也可以嵌入到任何C++应用程序中。
  • V8项目页面:https://github.com/v8/v8/wiki
  • V8源代码:https://github.com/v8/v8

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接