2013-05-14 4 views

ответ

3

Это зависит от реализации (в разумных пределах, реализация должна принципиально следуют the spec). Вы можете увидеть все детали того, как V8 (двигатель Хрома) и 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

Yo Вы можете много узнать о внутренней логике в спецификации ECMAScript, но реализация зависит от браузера.

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

+1

Что-то, что может быть проще для чтения: http://es5.github.io/ – Ian

+0

@Ian Возможно :) – 2013-05-14 14:12:40

Смежные вопросы