es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

JS “THIS” contenido de salida obteniendo un resultado diferente en el módulo CommonJS.

Mientras estaba probando a qué se refería “this” en diferentes fases en el código siguiente, esperaba que la última salida fuera el contenido de “global”, pero en su lugar mostró {}.

var hero = {
  name: 'Monkey',
  sayMyName: function() {
    console.log(this.name);
  }
};

hero.sayMyName();   // A 'Monkey'

var speakOut = hero.sayMyName;
speakOut();         // B global

const someone = { name: 'passenger' }

hero.sayMyName.call(someone);  // C 'passenger'

function here() {
  console.log(this);
}

const there = () => {
   console.log(this);
}

here();   // D global
there();  // E global

**output**

¿Alguien sabe por qué?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, la razón por la cual la última salida es un objeto vacío es porque en las dos últimas líneas de código, se llaman las funciones here() y there() en el contexto global, lo que significa que this se refiere al objeto global (global en Node.js). Dado que no se ha definido ninguna propiedad name en el objeto global, la salida es un objeto vacío {}.

Comments are closed.