Es una manera de solucionar el problema de la this
escape en el interior de devolución de llamada. Sin esta referencia adicional, el código sería el siguiente:
$.get(path, function(contents) { // or some other function with callback
//Wrong! `this` might no longer point to your object
this.done(JST[path] = tmpl);
})
Desafortunadamente! this
dentro de devolución de llamada de respuesta no es lo mismo que this
fuera de él. De hecho, puede ser cualquier cosa, dependiendo de qué $.get
(llamando a la devolución de llamada usando) decide que es. La mayoría de las personas usan referencia adicional llamado that
para el mismo propósito:
var that = this;
// ...
$.get(path, function(contents) { // or some other function with callback
// ...
that.async(JST[path] = tmpl);
})
Este patrón también parece razonable y fácil de leer.
Ah, y si eres curioso acerca de esta sintaxis:
done(JST[path] = tmpl)
Esta es una asignación utilizado como una expresión. El valor de asignación es el lado de la derecha, por lo que este código es equivalente a:
JST[path] = tmpl;
done(tmpl);
Eso no es una función incorporada. Debe ser provisto por alguna biblioteca/marco. – user123444555621