1

是否有任何参考或在线网站,我可以在其中看到 JavaScript 核心库方法push(), join(), split()等如何像其他语言一样实现(glib for C)

4

2 回答 2

3

它因实现而异(在合理范围内,实现必须从根本上遵循规范)。您可以查看 V8(Chrome 的引擎)和 SpiderMonkey(Mozilla 的)如何工作的所有细节,它们都是开源的:

例如,这就是V8 的实现方式Array#push (该链接中的行号可能会腐烂)

function ArrayPush() {
  if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) {
    throw MakeTypeError("called_on_null_or_undefined",
                        ["Array.prototype.push"]);
  }

  var n = TO_UINT32(this.length);
  var m = %_ArgumentsLength();
  for (var i = 0; i < m; i++) {
    this[i+n] = %_Arguments(i);
  }
  this.length = n + m;
  return this.length;
}
于 2013-05-14T14:08:12.870 回答
0

您可以在 ECMAScript 规范中了解大量有关内部逻辑的信息,但实施取决于浏览器。

http://www.ecma-international.org/ecma-262/5.1/

于 2013-05-14T14:09:34.910 回答