bien, fundamentos primero: cuando se escribe function Person(o) { ... }
, que son no declarar una clase - JavaScript no basa la clase, pero objeto basa. Esta declaración simplemente declara una función (que por cierto, también son objetos).
A continuación, cuando se crea un objeto como éste:
var mellon = new Person('Mellon');
va a crear un objeto, cuyo constructor (de clases) es Person
.
Ahora, lea esto con cuidado: desde 's constructor es Person
, todos los métodos en Person
' s prototype
estarán disponibles en el objeto.
Así que si usted escribe:
Person.prototype.shower = function(){ this.dirtFactor=2 }
entonces el método mellon.shower()
estarán disponibles.
Recomiendo pasar por Mozilla's intro to OOP in Javascript para obtener más detalles sobre este tema.
Así que para responder a su pregunta: this
se refiere al objeto con el que se invoca el método shower
. En el caso anterior, sería .
+1, pero para ser claros, 'this' se refiere a lo que estaba antes del' .' cuando se llama. Si se llama sin un '.', entonces' this' se establece de forma predeterminada en 'window' /' global'. –
Que se puede probar reemplazando la función de ducha con 'function() {console.log (this); } ' – kim3er
@ Box9 'this' se refiere al contexto actual. 'this' se referirá al objeto' window' (en un navegador) de forma predeterminada. El contexto cambia a medida que agrega recintos/funciones. – kim3er