Ahora que tenemos una buena idea de cómo funciona la primera regla cuando la palabra clave
está fuera de un objeto declarado, veamos qué sucede cuando la palabra clave está dentro de un objeto declarado.
La segunda regla que llamamos regla implícita u objeto indica que cuando la palabra clave se
encuentra dentro de un objeto declarado, el valor de la palabra clave siempre será el objeto principal más cercano que haya
muchas palabras.
Veamos a qué nos referimos al mirar el código en la diapositiva.
Aquí tenemos un objeto Person pero la clave es un primer nombre.
Saluda y determina el contexto.
Comencemos con el método decir hi dentro de esta función, estamos devolviendo el valor de la cadena.
Hola concatenado con el valor de la propiedad de primer nombre en la palabra clave.
Esto Como vemos que la palabra clave es dentro de un objeto declarado, buscamos en el objeto padre más
cercano para descubrir el valor de la palabra clave.
Esto podemos ver que el objeto principal más cercano es la variable persona, lo que significa que el valor de la
palabra clave.
Este es el objeto de persona.
Ahora examinemos el método de determinar el contexto.
Esta función debe devolver verdadero o falso.
Tenga en cuenta que estamos utilizando triple equals, que siempre se evaluará a un booleano.
¿Qué crees que devolverá esta función?
Piensa dónde ves la palabra clave.
Esto es dentro o fuera de un objeto declarado.
Vemos que la palabra clave es dentro del objeto persona, lo que significa que será igual a
la persona objeto.
Entonces esta expresión debería ser verdadera antes de continuar.
Tómese un segundo para revisar este código y colóquelo en la consola de Chrome o editor de texto para ver exactamente lo
que está sucediendo.
Ahora dijimos en la regla implícita que el valor de la palabra clave siempre será el objeto
principal más cercano.
Pero veamos cómo las cosas se vuelven un poco complicadas con los objetos anidados.
Vamos a recorrer este código.
Aquí vemos que tenemos una variable persona, pero esta vez se llama a la propiedad de primer nombre.
Una vez más tenemos un método hi y determinamos el método de contexto.
Tómese un momento y piense en lo que devolverán esas funciones cuando las llame.
Ahora observe que tenemos una clave adicional en el objeto de persona llamado perro.
El valor del burro es en realidad otro objeto.
Así que vamos a examinar el objeto anidado dentro del objeto perro.
Tenemos una clave de decir hola, que es una función que devuelve la cadena Hola unida con la palabra clave.
Al usar las dos reglas para determinar el valor de la palabra clave, se pausa el video y se
intenta averiguar cuál es el valor de la palabra clave this dentro de la función say hello.
Entonces podrías pensarlo.
¿Cuál es la palabra clave que se refiere a la persona objeto del objeto del perro?
O tal vez el objeto global.
Bueno, volvamos a nuestra primera regla que establece que si la palabra clave this no está
dentro de un objeto declarado, será el objeto global.
En este caso, vemos que la palabra clave es dentro de un objeto declarado llamado Persona.
Entonces pasamos a la segunda regla.
La segunda regla establece que el valor de la palabra clave siempre será el objeto primario más cercano.
Aquí es donde las cosas se vuelven un poco complicadas a pesar de que el objeto declarado es persona.
Hay un objeto dentro llamado Dog que es el objeto principal más cercano al método say hello.
Ahora que sabemos que la palabra clave this dentro del método say hello se refiere al objeto dog, cuál es
el valor de este material.
Primer nombre dentro del método decir hola.
Como el objeto perro no tiene una clave de primer nombre, el valor no estará definido.
Entonces, ¿por qué no llamamos al método say hello escribiendo person dog?
Diga hola, podemos ver que regresa.
Hola indefinido
También podemos ver que nuestra función de contexto determinada dentro del objeto perro devuelve falso porque
la palabra clave this dentro de la función de determinar contexto ya no se refiere al objeto persona.
Entonces, ¿cómo podemos solucionar esto o si queremos que nuestro método Say hello regrese?
Hola, frío en lugar de hola indefinido, necesitarás alguna forma de cambiar explícitamente el valor de la palabra clave
esto y eso es exactamente lo que aplica la llamada y las funciones de vinculación pueden hacer por nosotros en el siguiente video.
Veremos la tercera regla para determinar el valor de la palabra clave this using call apply and bind.
Las cosas se están volviendo emocionantes
Nos vemos en el próximo video.