如何在Nodejs中模拟"窗口"对象?

Ngo*_*Dao 8 javascript v8 node.js

在浏览器中运行时,附加到"窗口"对象的所有内容将自动成为全局对象.如何创建类似于Nodejs中的对象?

mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f();  // This should print "9" to console
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以将预定义对象global用于此目的.如果定义fooglobal对象的属性,则在此之后使用的所有模块中都可以使用它.

例如,在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');
Run Code Online (Sandbox Code Playgroud)

并在foo.js:

exports.bar = function() {
  console.log(foobar);
}
Run Code Online (Sandbox Code Playgroud)

确保您不使用var关键字,因为global已定义对象.

有关文档,请查看http://nodejs.org/api/globals.html#globals_global.


Mic*_*Yin 3

你可以附加全局的东西process而不是window