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é?
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()
ythere()
en el contexto global, lo que significa quethis
se refiere al objeto global (global
en Node.js). Dado que no se ha definido ninguna propiedadname
en el objeto global, la salida es un objeto vacío{}
.