2011-06-06 4 views
10

Digamos que tengo una página que extrae algunas fuentes de imagen, así:Motivo de .get() sin índice en jQuery API?

<div id="d"> 
    <img src="foo.gif"/> 
    <img src="bar.gif"/> 
    <img src="gah.gif"/> 
</div> 
<script type="text/javascript"> 
    var srcs = $('div#d > img').map(function(){return this.src}); 
    // srcs => ['foo.gif', 'bar.gif', 'gah.gif'] 
</script> 

Tenga en cuenta que srcs no es una matriz de JavaScript, sino un objeto de matriz similar; lo sabemos por el hecho de que podemos hacer llamadas a jQuery API sobre objetos devueltos por el selector y al hecho de que srcs.constructor != Array.

La API de jQuery proporciona un .get() method que, cuando no se ofrece ningún argumento, devuelve una matriz "estándar". ¿Hay alguna razón convincente para usar una matriz estándar en lugar de un objeto similar a una matriz o se incluye este método para completarlo?

[Editar]

para decirlo de otra manera - ¿Cuáles son las diferencias entre una matriz de JavaScript y el objeto de matriz similar devuelto por un selector de jQuery?

+0

+1 por _interesting _... – pixelbobby

+0

¡La misión continúa! http://stackoverflow.com/questions/6253601/how-to-multidimesional-array-as-follows-in-javascript/6253693#6253693 –

Respuesta

2

Le permite utilizar métodos de matriz estándar que jQuery no tiene, como push.

En particular, los objetos jQuery están destinados a ser inmutables, mientras que los arreglos no lo son.

1

La principal ventaja de get es la habilitación de índices negativos como -1 para obtener el último elemento. Ningún argumento simplemente le proporciona la matriz sin empaquetar sin procesar de elementos coincidentes.

+0

+1 para señalar los índices negativos! – maerics