在浏览器中运行时,附加到“window”对象的所有内容都将自动成为全局对象。如何创建类似于Nodejs中的对象?
mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f(); // This should print "9" to console
答案 0 :(得分:5)
您可以使用预定义对象global
来实现此目的。如果将foo
定义为global
对象的属性,则在此之后使用的所有模块中都可以使用它。
例如,在 app.js :
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
对象已定义。
答案 1 :(得分:4)
您可以将全局内容附加到process
而不是window
答案 2 :(得分:1)
您可以使用GLOBAL对象。
fruit = 'banana';
console.log(GLOBAL.fruit); // prints 'banana'
var car = 'volks';
console.log(GLOBAL.car); // prints undefined
答案 3 :(得分:0)
我来到这个简单的解决方案:
var mySpecialObject = global;
在普通浏览器中:
var mySpecialObject = this; // Run this at global scope
答案 4 :(得分:0)
如果您要将Web控制台与终端中运行的节点(两个Javascript)进行比较:
window
< - > global
(注意:不推荐使用GLOBAL)
:window.wgSiteName
(随机显示功能)
:global.url
document
< - > process
(注意:程序流程现在正在运行)
:document.title
:process.title
答案 5 :(得分:0)
无论环境如何,您现在都可以使用 globalThis
代替 global
和 window
。每个最近的浏览器和 Node 12+ 都支持它。这是 ES2020 的一部分