2011-01-28 7 views
10

Mirando mucho código de NodeJS y Javascript recientemente, parece que los argumentos no son una instancia de Array pero aún se comporta como uno, por lo que la gente hace cosas como Array.prototype.slice.call(arguments, ...) o que agrega verborrea y aumenta el obstáculo para que los novatos entiendan etc. Hay una razón por la cual los argumentos no son una instancia de Array o es solo una de esas partes malas?¿Por qué la función JavaScript `arguments` no es una instancia de Array en node.js?

Respuesta

28

NO. arguments es un objeto independiente que tiene una propiedad length y la posibilidad de usar [] para indexarlo. Pero, de lo contrario, es solo un objeto, no un objeto Array.

Y sí, esta es una de las partes malas de JavaScript.

+0

Gracias por aclarar, sé que tiene propiedades adicionales como .callee, etc. pero en un mundo ideal no deberían haber apuntado el prototipo a Array. por lo que tendría empalme/corte directamente en él. Pido no disparar al desarrollador de JS, pero solo para aclarar mi comprensión, idealmente alguien dará la vuelta y dirá que mi idea es retardada debido a x/y/z (malentendido fundamental, etc.) –

+0

@mattcodes Sí, definitivamente deberían haberlo hecho ese. JS tiene muchas peculiaridades, y esta es una de ellas. –

+2

Además, no asigne 'argumentos [0]', etc. ya que 'arguments [0]' es * exactamente lo mismo * que su primer parámetro formal, cambiando cualquiera de ellos, también cambiará el otro. –

Cuestiones relacionadas