是否可以阅读 JavaScript 全局/内置对象方法(即 array.filter、.sort)的代码?
Is it possible to read the code for JavaScript Global / Built-in Objects' Methods (i.e., array.filter, .sort)?
我正在学习 JavaScript 并且有兴趣阅读使 array.filter、array.sort 等工作的代码。
我不确定这些方法的正确术语是什么,但在阅读本文后假定为全局/内置:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects。
是否可以阅读使它们工作的代码?
简答:否
长答案:视情况而定。
当然这些方法是写在某处的;但通常不在 JavaScript。它们内置于解释器中,因此通常用 C/C++ 或其他一些 low-level 语言编写,具体取决于您使用的 JavaScript 引擎。
FireFox 中使用的 Spidermonkey,源码可用 here, or the V8 sources, used in Node.js and Chrome, here. The source for Microsoft's Chakra engine, used in Edge, is available here。不过,还有许多其他 JavaScript 引擎实现,有些是开源的,有些则不是。
这个问题的答案有两个层次。第一层是规范,例如 array.prototype.filter
、it is defined in ECMAScript 5.1 here.
每个 JavaScript 引擎然后编写它们自己的实现。根据您感兴趣的引擎,您将能够看到实际的代码实现。例如,V8(在 Chrome 中)是 open source.
我正在学习 JavaScript 并且有兴趣阅读使 array.filter、array.sort 等工作的代码。
我不确定这些方法的正确术语是什么,但在阅读本文后假定为全局/内置:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects。
是否可以阅读使它们工作的代码?
简答:否
长答案:视情况而定。
当然这些方法是写在某处的;但通常不在 JavaScript。它们内置于解释器中,因此通常用 C/C++ 或其他一些 low-level 语言编写,具体取决于您使用的 JavaScript 引擎。
FireFox 中使用的 Spidermonkey,源码可用 here, or the V8 sources, used in Node.js and Chrome, here. The source for Microsoft's Chakra engine, used in Edge, is available here。不过,还有许多其他 JavaScript 引擎实现,有些是开源的,有些则不是。
这个问题的答案有两个层次。第一层是规范,例如 array.prototype.filter
、it is defined in ECMAScript 5.1 here.
每个 JavaScript 引擎然后编写它们自己的实现。根据您感兴趣的引擎,您将能够看到实际的代码实现。例如,V8(在 Chrome 中)是 open source.