2015-05-11 54 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之前)。

相關問題