如何实现JavaScript核心方法?

时间:2013-05-14 14:07:21

标签: javascript

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

2 个答案:

答案 0 :(得分:3)

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

例如,这就是V8 implements 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;
}

答案 1 :(得分:0)

你可以在ECMAScript规范中学到很多关于内部逻辑的知识,但实现依赖于浏览器。

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