La estructura en los objetos de JavaScript se define con propiedades y métodos (funciones dentro del objeto), recordemos que todo dentro de esta estructura se definen con notación de dos puntos o pares.
En el objeto global this tiene el valor de la referencia de windows, es decir hace referencia a este objeto directamente.
Dentro de los objetos se interpreta como el valor del mismo objeto, pero no hay que confundir cuando se escriben varios métodos dentro del mismo, ya que dependiendo de donde se defina el this es el valor que se tomara, ya sea especificado por un método o del mismo objeto en general
A continuación un ejemplo:
var datosPersona= { nombre: "Laura Teresa", apellidos: "Gonzalez Perez", edad: "22" imprimirDatosPersona: function(){ console.log("Nombre completo: "this.nombre + " " + this.apellido + ", Edad:" + this.edad + " años");//------>1 hacer referencia al objeto en general }, direccionPersona:{ pais: "Mexico", estado: "Veracruz", obtenerResidencia:function(){ var self = this;//----------->2 var especificarDireccion = function(){ console.log(self); console.log("El pais donde radica es: " + self.pais + " en el estado de : " + self.estado); } especificarDireccion(); } } }; persona.imprimirDatosPersona(); persona.direccionPersona.obtenerResidencia:function();
En la cuarta propiedad del obejto datosPersona, this esta dentro de la sección del método imprimirDatosPersona lo cual hace referencia al objeto en general, es por eso que especificamos this.nombre y apunta a la primer propiedad del objeto.
En el siguiente escenario se define una variable como función llamada especificarDireccion () y se llama fuera de la misma, debemos notar que para este caso this tendrá el valor del objeto global (windows) ya que no se define como una propiedad del objeto, por lo cual creamos una variable que apunte al this que necesitamos seria desde el motodo obteneraResidencia la llamamos self aunque el nombre podría ser cualquiera, despues de esto podemos llamar self con la referencia al valor correcto.