Array.prototype.concat()隐藏内容

问题描述:

如何查看函数concat内部的代码?它如何做它的作用?有没有人有代码的副本或在浏览器控制台中查看它的方法?Array.prototype.concat()隐藏内容

console.dir不给我过去

console.dir(Array.prototype.concat); 
function concat() { [native code] } 
arguments: null 
caller: null 
length: 1 
name: "concat" 
__proto__: function Empty() {} 
<function scope> 

我不能或不知道如何检查该存取但必须有钻研JavaScript函数

+0

确实有:浏览你正在使用的任何引擎的C++代码。 (如果你的JS引擎没有发布它的源代码,那你的运气不好。) – apsillers 2014-10-10 12:47:23

+1

[Read JavaScript native code]可能的重复(http://*.com/questions/9103336/read-javascript-native-code ) – apsillers 2014-10-10 12:49:41

+2

要狭隘地尝试在你的具体问题的答案,这里是Chromium的'concat'的实现:https://code.google.com/p/chromium/codesearch#chromium/src/v8/src/array.js&sq=package:铬&l = 473(ArrayConcatJS'在第1519行的'InstallFunctions'调用中成为'Array.prototype.concat') – apsillers 2014-10-10 13:01:19

Array而来的方式使用JavaScript,所以它取决于你的JavaScript引擎是如何实现的。 JS引擎可以*地以任何方式实现它。有可能它没有使用JavaScript,因为它可能太慢或者可能无法实现,因为您需要一个JavaScript引擎,其中包含您要实现它的功能(see bootstrapping)。

在大多数浏览器中,代码JavaScript函数都是用C/C++实现的。以下是来自Chrome /铬系列浏览器的源的例子:https://code.google.com/p/chromium/codesearch#chromium/src/v8/src/array.js&sq=package:chromium&l=473

ArrayConcatJS成为Array.prototype.concatInstallFunctions呼叫线1519和荣誉为这个去apsillers

Array.concatRhino engine可以在这里找到:https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/NativeArray.java在方法js_concat()(如1322)。