JavaScript - this no referencia al objeto global

 
Vista:

this no referencia al objeto global

Publicado por jalt (3 intervenciones) el 22/03/2022 18:12:44
Estoy empezando a aprender javascript, y de repente me encontre con this. Según el libro de Kyle Simpson (this & object prototypes), this debiera referenciar al objeto global (sus propiedades). He aquí un fragmento de código muy simple, que en mi caso personal no ocurre.

1
2
3
4
5
function foo() {
console.log( this.a );
}
var a = 2;
foo(); // 2

Mi versión de node (v14.19.0) muestra undefined en vez de 2. Y esto ocurre cada vez que this refiere al objeto global (en los ejemplos del libro).

¿Qué está mal? He buscado en internet, y en todos los ejemplos this no refiere al objeto global
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

this no referencia al objeto global

Publicado por Alejandro (538 intervenciones) el 23/03/2022 16:27:38
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
He probado tu ejemplo y funciona correctamente.
He de decir que no uso node.js el ejemplo lo probé en el navegador.
Hay un foro dedicado a node.js
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

this no referencia al objeto global

Publicado por jalt (3 intervenciones) el 23/03/2022 17:24:31
Como dije, soy nuevo en esto de javascript. Así que me podrías decir como lo hiciste en el navegador, pues yo probé el código en un node.js online, y me entrega lo mismo : undefined..

Pero voy a consultar en dicho foro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.448
Plata
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

this no referencia al objeto global

Publicado por Alejandro (538 intervenciones) el 23/03/2022 17:37:45
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Lo guardas como .html
1
2
3
4
5
6
7
8
<script>
    function foo() {
        console.log( this.a );
    }
 
    var a = 2;
    foo(); // 2
</script>

Abres el archivo con tu navegador y abres el inspector (F12) para ver el resultado en la consola.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

this no referencia al objeto global

Publicado por Ivan (118 intervenciones) el 27/03/2022 13:04:02
Hola,

JavaScript es un lenguaje prototipado basado en Objetos y todo se va heredando de su objeto superior (explicado muy general).
La palabra this, en general, se refiere al objeto en su contexto ac tual, de modo que al llamar a this dentro de una función entonces se refiere a la función.

El problema es que se define la variable "a" fuera de la función y this se refiere al objeto dentro de la función, por eso no encuentra ninguna variable "a" dentro de la función.

Puedes ver la definición oficial de this en https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/this

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

this no referencia al objeto global

Publicado por jalt (3 intervenciones) el 28/03/2022 06:41:53
Tengo claro eso, el punto es que, debiera dar el valor 2. El problema es que, cada vez que this termina referenciando a una propiedad del objeto global, node.js entrega indefinido, y no es asi en el libro., entrega un valor distinto de indefinido. El atado es node.js, ya que para el, ¿Cuál es el objeto global?. ¿Y que referencia this en node.js cuando se trata del objeto global?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar