Soy nuevo en JavaScript y actualmente estoy leyendo el libro de Rausch "Speaking JavaScript", donde encontré la siguiente notación en la sección "Simulación de aplicación () para constructores":

new (Date.bind(null, 2011, 11, 24))

Ahora esto me parece bastante confuso. ¿Alguien puede explicar esta declaración en detalles? En particular, no puedo entender el significado del paréntesis que viene después de la palabra clave 'nueva', además, en lo que a mí respecta, 'vincular' es un método que puede aplicarse solo a funciones, ¿no es así? ? Gracias por adelantado.

0
Oscar 10 dic. 2015 a las 17:42

3 respuestas

La mejor respuesta
Date.bind(null, 2011, 11, 24)

Devuelve una función que invoca la función global Date con esos tres parámetros numéricos (Nochebuena 2011). El operador new se puede aplicar a cualquier función, por lo que en este caso se aplica a esa función. Considere esta reescritura:

var ChristmasEve2011 = Date.bind(null, 2011, 11, 24);
var d = new ChristmasEve2011();

Los paréntesis son necesarios debido a la precedencia del operador de new. Sin los paréntesis, el analizador lo interpretaría como una llamada a través de new de la función Date.bind. Con los paréntesis, la llamada bind ocurre primero , seguida de la llamada new a la función devuelta.

Tenga en cuenta que debido a la naturaleza de las funciones creadas por .bind(), el uso del operador new no tiene mucho sentido. Cuando se llama al constructor Date, el valor de this será null.

0
Pointy 10 dic. 2015 a las 14:58

'.bind' devuelve una nueva función con el valor de este enlace al primer argumento pasado a la función. En este caso, el valor de 'esto' será 'nulo'. Por lo tanto, solo devuelve el constructor Fecha sin nada en particular.

Es similar a:

new Date(2011, 11, 24)
0
Romain 10 dic. 2015 a las 14:50

Consulte este sitio en el punto 3. Entrará en algunos detalles al respecto.

0
user5664095user5664095 10 dic. 2015 a las 14:51
34204749