2012-04-07 8 views
7

Estaba leyendo How can I get query string values in JavaScript? en Stackoverflow y este fragmento de código de la primera respuesta me hizo preguntarme por qué'vars.push() 'se usa así?¿Por qué array.push() se usa para hacer un objeto?

function getUrlVars() 
{ 
    var vars = [], hash; 
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
    for(var i = 0; i < hashes.length; i++) 
    { 
     hash = hashes[i].split('='); 
     vars.push(hash[0]); 
     vars[hash[0]] = hash[1]; 
    } 
    return vars; 
} 

Pero en lugar de esto:

var vars=[]; 
... 
vars.push(hash[0]); 
vars[hash[0]] = hash[1]; 

Reescribí el código como:

var vars={}; 
... 
vars[hash[0]] = hash[1]; 

y funciona. Ahora las preguntas son:

  • ¿Por qué alguien utilizar una matriz para ese tipo de respuesta?
  • y ¿por qué alguien usaría ARR.push(KEY) y luego usaría el formato ARR[KEY]=VAL después?

Respuesta

1

push() anexa sus argumentos, en orden, al final de la matriz. Modifica la matriz directamente, en lugar de crear una nueva matriz. push(), y su método complementario pop(), usa matrices para proporcionar la funcionalidad de una pila de entrada primera, última salida.

+2

Cualquier langa que tenga punteros puede hacer POO. por lo que no hay lanzamientos de OOP, ya que OOP es una técnica de programación, no un paradigma de langage. no hay "objetos" en C pero puede hacer OOP en C. javascript es un idioma de procedimiento. Scheme o LISP no son, por ejemplo. – mpm

2

Esto da como resultado vars que es tanto una matriz de teclas como un diccionario.
La única buena razón que se me ocurre es mantener el orden de los parámetros de consulta, que es not defined en un diccionario.

De cualquier manera, me gustaría destacar esta función elimina los parámetros de consulta duplicados - sólo se mantiene el último valor (aunque la llave se inserta varias veces a la matriz)

1

empuje empujará la tecla que la última tecla. Por lo tanto, le permite tener un orden lógico en la matriz.

2

La función utiliza la matriz como una matriz y como un objeto.

Como una matriz contiene las claves de la cadena de consulta. Como objeto, contiene propiedades nombradas desde las claves en la cadena de consulta, y las propiedades tienen los valores de la cadena de consulta.

Así, m si la cadena de consulta, por ejemplo, se parece a esto: a=1&b=2, la matriz contiene los dos puntos "a" y "b", y tiene las dos propiedades a con el valor 1 y b con el valor 2 .

Cuestiones relacionadas