在瀏覽器中運行時,附加到「窗口」對象的所有內容都將自動成爲全局對象。我如何創建一個類似於Nodejs中的對象?如何在Nodejs中模擬「window」對象?
mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f(); // This should print "9" to console
在瀏覽器中運行時,附加到「窗口」對象的所有內容都將自動成爲全局對象。我如何創建一個類似於Nodejs中的對象?如何在Nodejs中模擬「window」對象?
mySpecialObject.foo = 9;
var f = function() { console.log(foo); };
f(); // This should print "9" to console
可以全球東西附加到process
而不是window
您可以使用預定義的對象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);
}
確保爲global
對象是你不使用var
關鍵字已經定義。
但要小心,與瀏覽器JavaScript不同,全局對象在單詞意義上並非真正全球化。它們仍然是本地的一個模塊,這是一個JavaScript文件。換句話說,附加到文件全局對象的任何東西都不會在另一個文件中可用,您將不得不將其附加到特殊的'module.exports'對象。有關更多信息,請查看nodejs如何工作。 –
感謝您的答覆和通知。我已經到了這個簡單的解決方案:var mySpecialObject = global。在瀏覽器中(全局範圍):mySpecialObject = this。 –
您可以使用GLOBAL對象。
fruit = 'banana';
console.log(GLOBAL.fruit); // prints 'banana'
var car = 'volks';
console.log(GLOBAL.car); // prints undefined
我已經來到這個簡單的解決方案:
var mySpecialObject = global;
在正常的瀏覽器:
var mySpecialObject = this; // Run this at global scope
如果你比較Web控制檯節點終端中運行(包括Java腳本):
window
< - >global
(注意:GLOBAL i是不推薦)
在Web控制檯:window.wgSiteName
(隨機顯示功能)
):global.url
document
< - >process
(注:現在正在運行的程序處理)
in Web Console:document.title
in Node(Terminal):process.title
我的意思是我想創建一個類似於「窗口」的特殊對象。將「foo」附加到它將使「foo」成爲全局。 –