引擎盖下的Array.prototype.concat()

时间:2014-10-10 12:45:29

标签: javascript console 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函数

1 个答案:

答案 0 :(得分:2)

Array附带JavaScript,因此它取决于您的JavaScript引擎如何实现。 JS引擎可以以任何方式自由实现它。有可能它不使用JavaScript,因为它可能太慢或者可能无法实现,因为您需要一个具有您尝试实现它的功能的JavaScript引擎(see bootstrapping)。

在大多数浏览器中,许多JavaScript函数都是用C / C ++实现的。以下是Chrome / Chromium系列浏览器的示例:https://cs.chromium.org/chromium/src/v8/src/builtins/builtins-array.cc?q=Array.prototype.concat&sq=package:chromium&dr=C&l=635

Chrome bootstrapper中的ArrayConcatJS来电中的

Array.prototype.concat变为InstallFunctions。对此的称赞转到apsillers

可以在此处找到Rhino engineArray.concat js_concat()方法{{1}}(如1322)。