tl; dr al devolver this
desde un método es una forma común de permitir el "encadenamiento" de métodos en conjunto.
this
se refiere al contexto actual, y el significado cambia en función de la manera en que usted está invocando una función.
Con invocación de la función, this
se refiere al objeto global, incluso si la función está siendo invocado desde un método, y la función pertenece a la misma clase como el método de la invoca. Douglas Crockford ha descrito esto como "error en el diseño del lenguaje" [Crockford 28]
Con invocación de método, this
se refiere al objeto sobre el que se está invocando el método .
Con la invocación de solicitud, this
se refiere a lo que se le haya asignado al llamar a apply.
Con la invocación del constructor, this
se refiere al objeto que es creado para usted detrás de las escenas, que se devuelve cuando las salidas constructor (siempre y cuando no regrese erróneamente su propio objeto de un constructor).
En el ejemplo anterior, se está creando un nuevo método llamado method
que le permite añadir funciones de forma dinámica, y devuelve this
, lo que permite el encadenamiento.
Por lo que podría hacer algo como:
Car.method("vroom", function(){ alert("vroom"); })
.method("errrk", function() { alert("errrk"); });
y así sucesivamente.
@ user722756: 'Porque method' se añade a' Function.prototype', 'this' se referirá a una función contra la cual se llamó 'method'. Se supone que esta función debe usarse como un "constructor", porque 'method' está extendiendo el objeto' prototype' de la función. – RightSaidFred
conozco el uso de "esta" palabra clave, simplemente no sé para qué sirve "devolver esto" dentro de una función. – user722756
'return this' se usa para crear una [interfaz fluida] (http://en.wikipedia.org/wiki/Fluent_interface). Vea las respuestas publicadas por @marcioAlmada y @AdamRackis a continuación. –