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?
10
A
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.
Cuestiones relacionadas
- 1. JavaScript: ¿por qué el cambio de una variable de argumento cambia los `arguments`" array "?
- 2. ¿Por qué la función == de Array no es verdadera para Array (1,2) == Array (1,2)?
- 3. ¿Por qué los métodos Array no están integrados en una instancia de Array?
- 4. Javascript Array Concat no funciona. ¿Por qué?
- 5. ¿Por qué los argumentos de una función no son una matriz en Javascript?
- 6. ¿Por qué javascript getTime() no es una función?
- 7. ¿Por qué .val() no es una función?
- 8. ¿Es posible bifurcar una función de javascript en Node.js?
- 9. ¿Por qué ",,," == Array (4) en Javascript?
- 10. ¿Qué significa 'es una instancia de' en Javascript?
- 11. ¿Por qué jQuery.parseJSON no es una función?
- 12. ¿Por qué es posible llamar a la función miembro no estática sin una instancia de objeto?
- 13. ¿Por qué la impresión no es una función en python?
- 14. ¿Por qué es necesaria la función apply() en el constructor
- 15. ¿Por qué una función y una devolución de llamada no bloquean en Node.JS?
- 16. ¿Por qué is_lock_free es una función miembro?
- 17. ¿Por qué mi función eliminada no es typeof "undefined" en Node.js?
- 18. Javascript dividir no es una función
- 19. ¿La función array.clear() de JavaScript no es una función?
- 20. Node.js express.js objeto no es una función call_non_function
- 21. Error de JavaScript: "no es una función"
- 22. javascript submit() no es una función?
- 23. ¿Por qué no puedo sobrescribir el prototipo de `Array` (` Array.prototype`)?
- 24. ¿Por qué prefiere currying to tuple arguments en OCaml?
- 25. Javascript: getFullYear() no es una función
- 26. JavaScript date.format no es una función
- 27. javascript Fecha(). GetTime() no es una función
- 28. ¿Por qué necesito la palabra clave `new` para una instancia de` Fecha` en JavaScript?
- 29. ¿Qué hace ~~ en JavaScript/node.js?
- 30. ¿Por qué no funciona `{} .toString.apply (array)`?
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.) –
@mattcodes Sí, definitivamente deberían haberlo hecho ese. JS tiene muchas peculiaridades, y esta es una de ellas. –
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. –