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