2013-05-14 121 views

回答

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; 
} 
0

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

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

+1

的东西,可能是一个更容易阅读:http://es5.github.io/ – Ian 2013-05-14 14:10:55

+0

@Ian可能:) – 2013-05-14 14:12:40