Estoy revisando el excelente Advanced javascript tutorial de John Resig y no entiendo completamente cuál es la diferencia entre las siguientes llamadas: (tenga en cuenta que 'arguments' es una palabra javascript incorporada y no es exactamente una gran variedad de ahí la piratería con el Array.slice en lugar de simplemente llamando arguments.slice)Diferencia entre Array.slice y Array(). Slice
>>> arguments
[3, 1, 2, 3]
>>> Array.slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array.slice.call(arguments, 1)
[]
>>> Array().slice.call(arguments)
3,1,2,3 0=3 1=1 2=2 3=3
>>> Array().slice.call(arguments, 1)
1,2,3 0=1 1=2 2=3
Básicamente mi malentendido se reduce a la diferencia entre Array.slice y array(). rebanada. ¿Cuál es exactamente la diferencia entre estos dos y por qué Array.slice.call no se comporta como se esperaba? (que devuelve todos menos el primer elemento de la lista de argumentos).
No sé cómo se comportó de navegadores '08, pero a principios de 2013, 'String.substring.call' lanza una TypeError en Chrome (ya que el constructor de' string' no tiene una propiedad 'substring') . – bfavaretto
@bfavaretto, Firefox (solo) implementa 'Array.slice' y' String.substring'. El asker sin duda estaba usando Firefox cuando estaba probando esto. –
Gracias por la información, @NathanWall. Eso es bastante extraño de Firefox, probablemente algo que agregaron como atajo a 'String.prototype.substring' et al. por compatibilidad con versiones anteriores ... y aparentemente se ha mantenido por un tiempo. – bfavaretto