当在浏览器中运行时,与“window”对象相关联的所有内容都将自动成为全局对象。我该如何在 Node.js 中创建类似的对象?
mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f(); // This should print "9" to console
当在浏览器中运行时,与“window”对象相关联的所有内容都将自动成为全局对象。我该如何在 Node.js 中创建类似的对象?
mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f(); // This should print "9" to console
global
来实现这个目的。如果您将foo
定义为global
对象的属性,则在此之后使用的所有模块中都可用。var http = require('http');
var foo = require('./foo');
http.createServer(function (req, res) {
//Define the variable in global scope.
global.foobar = 9;
foo.bar();
}).listen(1337, '127.0.0.1');
在foo.js文件中:
exports.bar = function() {
console.log(foobar);
}
请确保不要使用var
关键字,因为global
对象已经被定义。
process
而不是window
。globalThis
代替 global
和 window
。每个最近的浏览器和 Node 12+ 都支持它。它是 ES2020 的一部分。// BEFORE
global.foo = 9; // ⚠️ Node only
window.foo = 9; // ⚠️ Browser only, no service workers
// AFTER
globalThis.foo = 9; // ✅ Everywhere!
你可以使用 GLOBAL 对象。
fruit = 'banana';
console.log(GLOBAL.fruit); // prints 'banana'
var car = 'volks';
console.log(GLOBAL.car); // prints undefined
GLOBAL
应该不是小写吗? - InfigonGLOBAL
对象是可用的。然而,现在已经被弃用,并且被小写的 global
替代了。 - caike如果你要比较Web控制台和在终端中运行的Node(都是Javascript):
window
<-> global
(注意:GLOBAL已被弃用)
在Web控制台中: window.wgSiteName
(随机显示功能)
在Node(终端)中:global.url
document
<-> process
(注意:程序正在运行的进程)
在Web控制台中:document.title
在Node(终端)中:process.title
var mySpecialObject = global;
在正常的浏览器中:
var mySpecialObject = this; // Run this at global scope