logo

midulive


Transcribed podcasts: 605
Time transcribed: 13d 3h 7m 36s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Dish hace referencia al contexto donde se ejecuta.
Muy bien.
Esa sería la más típica, ¿no?
Que Dish tiene justamente el contexto de donde se ejecuta, ¿vale?
O sea, esa sería la más típica.
Luego, lo que se puede decir más bien del Dish sería que siempre se refiere al dueño de la función, ¿vale?
Dish que puede ser el contexto en el que se ejecuta, pero creo que es mejor si habláis del dueño, de la función, porque entonces creo que se entiende mejor.
Y os voy a explicar por qué.
Cuando llega el Dish, los espectadores han ido corriendo, luego van a la entrevista y dicen, es que no sé lo que es el Dish.
Es que lo entiendo porque a la gente no le gusta nada el tema del Dish, es que me lío, es que me cuesta.
Pues es que es normal, porque si a la mínima te vas, cuando empiezan las cosas complicadas, es que es normal.
Luego te quejarás, es que nadie me ha explicado nunca el Dish, nunca me lo has explicado, pero es que es normal.
Es que a la mínima que cuesta, ay, es que ahora está difícil Javascript, es que está difícil Javascript, ya no quiero más Javascript.
Te avisé.
Así que vamos a ello, va, que ahora lo vas a entender, no te preocupes.
Pero si aún estáis aquí, unos cuantos, pero bueno, a ver.
No, pero es verdad que estábamos casi 900, ha empezado el Dish y ha hecho...
Hasta luego, yo me voy.
Mi trabajo aquí ha terminado.
Qué bueno.
No es que sea difícil, es que es un lenguaje con muchas lagunas que le queda mucho por mejorar.
No, no estoy de acuerdo.
No es que tenga lagunas, es que hay que saber entenderlo.
Es que es normal, si no lo entiendes, si no sabes lo que hace, pues al final lo que pasa es normal.
Cosa que te parezca muy raro, que tenga lagunas y tal.
Es que está hecho así.
Tiene cosas que no son perfectas, pero es que no hay muchos lenguajes que sean perfectos, la verdad.
No, no fuimos a googlear Dish.
No te digas.
Vale, venga, vamos con ello, va, que os voy a explicar.
Os explico, ¿vale?
Venga.
Tenemos una función que es getName, que está utilizando Dish, ¿vale?
Este Dish se refiere al dueño que está haciendo la llamada de esta función, ¿vale?
¿Quién es el dueño?
Si yo lo llamo aquí, el dueño es global.
Global es una variable también especial que se refiere a la variable global, ¿no?
O global Dish y en el cliente es window.
Son iguales.
Estas tres son iguales.
Son iguales, ¿vale?
Ahora, ¿por qué es undefined?
Porque como podemos ver, en la variable global no tenemos nada.
O sea, no tenemos .nic.
O sea, es que no hay nada.
Entonces, voy a hacer un console.log de Dish para que veáis hasta aquí.
¿Vale?
¿Veis?
Que tenemos aquí todo el objeto global.
Aquí está todo el objeto global.
Mira, window.
Ah, mira, sí que se puede utilizar window.
Ah, pues mira, no tenía idea.
Windows, self, document.
Aquí todo lo que podéis utilizar, ¿vale?
Perfecto.
Pero no hay nick.
¿Por qué no hay nick?
Porque en global, que es la variable global, deberíamos poner nick.
Vamos a poner aquí global nick.
¿Vale?
Así que ahora, en este caso, podemos ver que el console.log, mi nombre es...
Vamos a poner nick.
Vale.
Mi nombre es global nick.
Hasta aquí bien, ¿no?
Perfecto.
Usa console.table.
¿Para qué?
Si es una...
No tiene ningún tipo...
Ah, para lo otro.
Pero será un momento, ¿eh?
¿Por qué el objeto global sí está en scope de getName?
El objeto global, en este caso, Dish...
Esto no es el objeto global.
Esto es Dish.
Y Dish, en este caso, es el objeto global.
Porque el dueño de la llamada, de la ejecución de esta función, está en la línea 9,
que justamente, ¿quién lo ha llamado?
El objeto global.
Y por lo tanto, ya lo tendrías.
¿Vale?
Hasta aquí bien, ¿no?
Hasta aquí, todo claro.
Hasta aquí, Dish apunta a una variable global.
En este caso, sí.
En este caso, sí.
¿Vale?
¿Por qué?
Porque esta línea, la 9, lo está haciendo, lo está haciendo justamente la variable global,
la que está ejecutando getName.
El dueño...
Este Dish, sí lo entiendo.
Vale, venga, va.
Vamos a por el siguiente, ¿eh?
No entiendo de dónde viene ese global.
Es que este global es una variable que ya está disponible.
O sea, es que hay una cosa que tenéis que tener en cuenta.
Si yo pongo aquí window, es como si alguien me pregunta, oye, es que no entiendo de dónde viene window.
¿Dónde viene window?
¿De dónde viene global this?
Pues global this y window son variables especiales que son globales.
Globales es porque están disponibles en todos los contextos de ejecución de tu programa y que están ahí, ¿sabes?
Entonces, hay que tenerlo en cuenta.
Y en este caso, también this.
This también siempre es una variable especial.
Lo que pasa es que this va a ir cambiando su valor dependiendo de dónde se esté, dónde se encuentra.
¿Vale?
Así que window, global this y this, en este caso, es lo mismo.
Pero ahora vamos a ver cuándo cambia this.
Mientras que window y global this, que son la misma variable, tienen el mismo valor, nunca cambian,
this su valor va a ir cambiando dependiendo justamente quién es el dueño de la ejecución de esa función.
¿Vale?
Así que en este caso, esta función getName, tenemos que this.nic, ahora es mi nombre es globalnic.
¿Vale?
Porque justamente en global, que esto sería como poner window, que creo que se puede poner.
¿Vale?
Window.nic, tenemos globalnic.
¿Está aquí bien?
Claro, global this y window nunca cambian.
Nunca cambian.
¿Vale?
Nunca cambian.
¿Sí?
Vale.
Perfecto.
Hasta aquí bien.
Ahora bien, ¿qué pasa con este this?
Como hemos visto, ahora es el objeto global.
Pero, si yo creo un objeto, por ejemplo, vamos a crear aquí un objeto que se llame midudev.
¿Vale?
Y voy a poner que su nick es midudev.
Y vamos a tener una función que se llama getName, que justamente es esta función getName.
¿Vale?
¿Hasta aquí bien?
Ahora vamos a poner midudev.getName.
La voy a ejecutar.
Y fíjate que al ejecutarse tenemos mi nombre es midudev.
¿Por qué ha cambiado?
¿Qué es lo diferente que hay entre la línea 9 y la línea 16?
¿Cuál es la diferencia?
La diferencia es que en la línea 9, el dueño de la ejecución de esta función es el objeto global.
Y por lo tanto, el objeto global, lo que está pasando, es que lo tenemos aquí en this.
Pero en la línea 16, el dueño de la ejecución de este método, getName, es el objeto midudev.
Por lo tanto, este objeto que vemos aquí es el que llegará aquí en this.
De hecho, lo vas a poder ver así.
Voy a poner esto aquí, esto así.
Voy a hacer un console.log de this.
¿Vale?
Console.log de this.
Y vas a ver que this, lo que tiene es nick midudev, getName, getName.
¿Vale?
O sea, el objeto this ahora se refiere a este objeto.
Entonces, ¿cuál es la diferencia?
La diferencia es justamente que el dueño de la ejecución de esa función es diferente.
Mientras que este de la línea 10 era el objeto global, este de la línea 17 es el objeto midudev.
Ya está.
El contexto de ejecución ha cambiado, es diferente.
Por lo tanto, this, que se refiere como al dueño que es el que se está preocupando de que se ejecute esto, pues ya está.
Claro, si yo pongo window.getName, pues pasa lo mismo que antes.
Window.getName, lo que vamos a ver es que me va a volver, bueno, va a hacer el console.log este.
Va a ser mi nombre es undefined, porque ahora mismo no tenemos en ningún sitio.
Porque this.nick no está en window.
Pero aquí tenemos dos dueños diferentes, midudev y window.
Es la misma función, pero this se convierte en una cosa distinta.
Da igual que hagas this.midudev.
Si hagas this.midudev, vas a ver que también es midudev.
Porque midudev es el último owner de la ejecución.
¿Y si son arrow function funciona igual?
Obviamente no, el iya, porque las arrow functions no tienen this en este caso.
Si, por ejemplo, le pondríamos aquí una arrow function,
lo que vamos a ver, para empezar, es que claro, esto no estaría ya en el score global,
pero bueno, vamos a ver que es undefined.
Porque el this que tenemos aquí no sería el objeto, ¿vale?
Justamente las arrow functions no añaden el contexto de ejecución.
No pueden ser owners de la ejecución de una función.
Esto es una cosa que la simplifica bastante.
¿Arrow function, objeto global?
No siempre, matiki.
Mira, es muy interesante, pero para que os folle la mente ya del todo,
tenéis que tener en cuenta que esta arrow function sí que es verdad
que no añade un this, y tampoco se le puede utilizar el .call, el .apply y todo esto.
Pero, claro, si esto estuviese dentro de otro contexto de ejecución
que sí que sería una función, o sea, por ejemplo, function context
y haces esto
y esto lo ejecutas así
y esto haces context, context, ¿vale?
Y haces context
getName
Esto lo quitamos
Vale, aquí puedes ver, hay que tener en cuenta, o sea,
lo que no quiero es que penséis
Si es una arrow function, seguro que el this es el objeto global
No tiene por qué
Lo que tenéis que entender es cómo realmente funciona cada cosa, ¿vale?
En este caso, la arrow function no tiene, o sea, no tiene valor this
No se lo pone directamente
Pero, como está dentro de una función, dentro de un contexto
Por lo tanto, este this es el del contexto de esta función
Y aquí le he pasado a mí mismo
Mi dudes.context y cambia el this
¿Por qué con la arrow function sola no funciona?
Porque la arrow function no bindea el valor de this
Simplemente
Ya está
Si reemplazas la arrow function por function común
Nick es undefined, ¿no?
No sé
Me quedo con que this es el owner de quien ejecuta la función
Sí
Lo único que tenéis que tener claro
Es que las arrow functions no bindean el valor de this, ¿vale?
No pueden ser owners
Con que eso lo tengáis claro
Las arrow functions son una excepción
Y no pueden ser owners
Y por lo tanto no tienen contexto de ejecución
Bueno, vamos a dejar el this
Que veo que os ha follado la mente
Bindear básicamente es cambiarle el valor a this
No le puede cambiar el valor de this
No tiene un contexto de ejecución
En las arrow functions
Y por lo tanto no puede ser owner
Y por lo tanto no le cambia el valor a this
Vamos a dejar el this
Porque es que os ha dejado
¿Qué es blindea?
No es blindea
Es bindea
Bindea significa
Como otorgarle un valor a algo
Ya solo quedamos
Sí, sí
Como sigamos hablando del this
Ya
O sea, dentro de poco nos vamos todos
Me voy
Me tengo que ir a trabajar
Eso dice Julidón
Pero en realidad te vas por el this
Por el this murieron 150 personas
Ya te digo, ¿eh?
Ya te digo
This is Esparta
¿Se puede decir que las arrow functions
¿Qué pasa?
Ya te digo
Ahora
Porque la�za
Esparta
Esparta
Ya te digo
A ver
Ya te digo
Seight
Y
far
Ya te digo
No
No
No
No
No
No
No
No
No
No
No
No
No
No
No
No
I