有没有办法查看JavaScript默认方法的源代码?

4

有没有办法查看JavaScript的默认方法源代码?例如 .sort() 或 .reverse()。我认为它是C代码,但在哪里可以阅读它?


8
JavaScript是一种规范。有各种实现,其中之一是Google的V8 - 你可以从那里开始。 - James Thorpe
1
这些似乎是V8中Array.prototype.sort()Array.prototype.reverse()的定义。它们都是用JavaScript编写的。 - Frxstrem
1个回答

7
SpiderMonkey的JavaScript数组实现(用于Firefox)的代码中,您需要从array_sortarray_reverse函数开始查找。更一般地说,寻找array_methods常量;它具有相关函数的索引。
V8的JavaScript数组实现(用于Chrome和Opera)的代码中,您需要分别查找ArraySortArrayReverse函数。查找GlobalArray.prototype以找到其他函数的索引。 JavaScript Core's JavaScript Array implementation(在Safari中使用)有点不同寻常,因为Array.prototype.sort及其类似函数实际上是用JavaScript实现的。你想要的sort函数在该文件中简单地命名为sort。但并非所有Array.prototype函数族都在该文件中找到;例如,我不确定reverse在哪里。
Chakra实现(在IE中使用)的源代码不可用,我怀疑它们可能永远不会公开。Presto实现的源代码(以前在Opera中使用,然后切换到Blink/V8)也是如此。

终于有人提供了一些资源来回答这个问题,但它们全部都是404错误。你会如何检查JavaScript源代码呢?我想看一下任何数组方法的实现。从你的帖子中我明白了有几种方法,其中任何一种都可以。我期望如果我只是console.log(Array.prototype.forEach),我就能看到它包含的js代码。但我得到的是:ƒ forEach() { [native code] }总之,任何有关观察JavaScript源代码的帮助、提示、链接等都将有所帮助。 - eran otzap
2
尽管它们显示404错误,但从上面的链接中找到V8数组源代码相当容易。这可能是因为该答案是5年前给出的。https://chromium.googlesource.com/external/v8/+/refs/heads/master/src/array.js - Taha

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