this в модуле nodejs
Кто-нибудь может объяснить или дать ссылку на объяснение почему в файле в файле модуля this возвращает {} тогда как внутри любой функции this возвращает объект global?
Чуть подробнее: В консоли, например, все в целом понятно, мы находимся в среде но не внутри какого-либо модуля
> this
<ref *1> Object [global] {
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
},
queueMicrotask: [Function: queueMicrotask],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
}
}
однако внутри модуля когда я создаю вот такой файл например:
function context() {
console.log(this);
}
console.log(this);
context();
вывод получается вот такой:
{}
<ref *1> Object [global] {
global: [Circular *1],
clearInterval: [Function: clearInterval],
clearTimeout: [Function: clearTimeout],
setInterval: [Function: setInterval],
setTimeout: [Function: setTimeout] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
},
queueMicrotask: [Function: queueMicrotask],
clearImmediate: [Function: clearImmediate],
setImmediate: [Function: setImmediate] {
[Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
}
}
то бишь пустой объект для this в модуле и объект global для this в функции Кто-нибудь знает почему это так и где в доке NodeJS это описано?
Ответы (1 шт):
По историческим причинам в модуле this === module.exports.
Но пользоваться этим не рекомендуется.
https://nodejs.org/api/deprecations.html#deprecations_dep0092_top_level_this_bound_to_module_exports