Por que o Array.prototype foi projetado para ser uma matriz totalmente funcional?

5

Na visualização abaixo,

Existemdoisobjetosdematriz(cars&bikes)criadoscomasintaxeabaixo,

varcars=newArray("Saab", "Volvo", "BMW");
var bikes = ["Honda", "Yamaha"];

cujo valor da propriedade [[Class]] é Array .

Além disso, também temos Array.prototype , que é uma matriz totalmente funcional, conforme mostrado abaixo,

> Object.prototype.toString.call(Array.prototype);
      "[object Array]"
> Array.prototype[0] = "Volvo";
      "Volvo"
> Array.prototype[1] = "BMW";
      "BMW"
> Array.prototype.length;
      2

Geralmente, quando você coloca algo no prototype , cada instância do objeto compartilha as mesmas propriedades.

Pergunta:

Com a propriedade length como membro, Qual é a idéia por trás de Array.prototype ser uma matriz totalmente funcional?

    
por overexchange 06.12.2015 / 15:00
fonte

1 resposta

2

O protótipo Array é em si um array totalmente funcional, porque ele precisa conter toda a funcionalidade necessária para que um objeto funcione como um array. As instâncias de matriz herdam todas as suas funcionalidades através do protótipo.

De acordo com a especificação :

The Array prototype object is itself an array; its [[Class]] is "Array", and it has a length property (whose initial value is +0) and the special [[DefineOwnProperty]] internal method described in 15.4.5.1.

    
por 10.12.2015 / 13:37
fonte