2015-05-11 57 views
0

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

+8

JavaScript是一个规范。有各种各样的实现,其中之一是[谷歌的V8](https://code.google.com/p/v8/) - 你可以从那里开始。 –

+1

这些似乎是['Array.prototype.sort()']的定义(https://github.com/v8/v8-git-mirror/blob/0b81f67b12550c118f1a94528c73e1cec01263a2/src/array.js#L857-L1140)和V8中的['Array.prototype.reverse()'](https://github.com/v8/v8-git-mirror/blob/0b81f67b12550c118f1a94528c73e1cec01263a2/src/array.js#L560-L593)。它们都是用JavaScript编写的。 – Frxstrem

+0

谢谢大家! :) – user2105306

回答

2

SpiderMonkey's JavaScript Array implementation(在Firefox中使用)的代码中,您首先需要查看array_sortarray_reverse函数。更一般地,寻找array_methods常数;它有相关功能的索引。

在代码V8's JavaScript Array implementation(在Chrome和Opera中使用)中,您需要分别查找ArraySortArrayReverse函数。查找GlobalArray.prototype以查找其他功能的索引。

JavaScript Core's JavaScript Array implementation(在Safari中使用)有点不同寻常,因为Array.prototype.sort及其之类实际上是在JavaScript中实现的。您想要的排序功能在这个文件中简单地命名为sort。但是,并不是所有的Array.prototype函数族都在该文件中找到;例如,我不确定reverse在哪里。

Chakra的实现(在IE中使用)的源代码不可用,我怀疑它们可能永远不会。 Presto实现的源代码也是如此(以前在Opera中使用,在切换到Blink/V8之前)。

相关问题