一文詳解node.js有哪些全局對(duì)象呢
一、是什么
在瀏覽器 JavaScript 中,通常window 是全局對(duì)象, 而 Nodejs中的全局對(duì)象是 global
在NodeJS里,是不可能在最外層定義一個(gè)變量,因?yàn)樗械挠脩舸a都是當(dāng)前模塊的,只在當(dāng)前模塊里可用,但可以通過exports對(duì)象的使用將其傳遞給模塊外部
所以,在NodeJS中,用var聲明的變量并不屬于全局的變量,只在當(dāng)前模塊生效
像上述的global全局對(duì)象則在全局作用域中,任何全局變量、函數(shù)、對(duì)象都是該對(duì)象的一個(gè)屬性值
二、有哪些
將全局對(duì)象分成兩類:
- 真正的全局對(duì)象
- 模塊級(jí)別的全局變量
真正的全局對(duì)象
下面給出一些常見的全局對(duì)象:
- Class:Buffer
- process
- console
- clearInterval、setInterval
- clearTimeout、setTimeout
- global
Class:Buffer
可以處理二進(jìn)制以及非Unicode編碼的數(shù)據(jù)
在Buffer類實(shí)例化中存儲(chǔ)了原始數(shù)據(jù)。Buffer類似于一個(gè)整數(shù)數(shù)組,在V8堆原始存儲(chǔ)空間給它分配了內(nèi)存
一旦創(chuàng)建了Buffer實(shí)例,則無法改變大小
process
進(jìn)程對(duì)象,提供有關(guān)當(dāng)前進(jìn)程的信息和控制
包括在執(zhí)行node程序進(jìn)程時(shí),如果需要傳遞參數(shù),我們想要獲取這個(gè)參數(shù)需要在process內(nèi)置對(duì)象中
啟動(dòng)進(jìn)程:
node index.js 參數(shù)1 參數(shù)2 參數(shù)3
index.js文件如下:
process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`);
});輸出如下:
/usr/local/bin/node
/Users/mjr/work/node/process-args.js
參數(shù)1
參數(shù)2
參數(shù)3
除此之外,還包括一些其他信息如版本、操作系統(tǒng)等

console
用來打印stdout和stderr
最常用的輸入內(nèi)容的方式:console.log
console.log("hello");清空控制臺(tái):console.clear
console.clear
打印函數(shù)的調(diào)用棧:console.trace
function test() {
demo();
}
function demo() {
foo();
}
function foo() {
console.trace();
}
test();
clearInterval、setInterval
設(shè)置定時(shí)器與清除定時(shí)器
setInterval(callback, delay[, ...args])
callback每delay毫秒重復(fù)執(zhí)行一次
clearInterval則為對(duì)應(yīng)發(fā)取消定時(shí)器的方法
clearTimeout、setTimeout
設(shè)置延時(shí)器與清除延時(shí)器
setTimeout(callback,delay[,...args])
callback在delay毫秒后執(zhí)行一次
clearTimeout則為對(duì)應(yīng)取消延時(shí)器的方法
global
全局命名空間對(duì)象,墻面講到的process、console、setTimeout等都有放到global中
console.log(process === global.process) // true
模塊級(jí)別的全局對(duì)象
這些全局對(duì)象是模塊中的變量,只是每個(gè)模塊都有,看起來就像全局變量,像在命令交互中是不可以使用,包括:
- __dirname
- __filename
- exports
- module
- require
__dirname
獲取當(dāng)前文件所在的路徑,不包括后面的文件名
從 /Users/mjr 運(yùn)行 node example.js:
console.log(__dirname); // 打印: /Users/mjr
__filename
獲取當(dāng)前文件所在的路徑和文件名稱,包括后面的文件名稱
從 /Users/mjr 運(yùn)行 node example.js:
console.log(__filename); // 打印: /Users/mjr/example.js
exports
module.exports 用于指定一個(gè)模塊所導(dǎo)出的內(nèi)容,即可以通過 require() 訪問的內(nèi)容
exports.name = name; exports.age = age; exports.sayHello = sayHello;
module
對(duì)當(dāng)前模塊的引用,通過module.exports 用于指定一個(gè)模塊所導(dǎo)出的內(nèi)容,即可以通過 require() 訪問的內(nèi)容
require
用于引入模塊、 JSON、或本地文件。 可以從 node_modules 引入模塊。
可以使用相對(duì)路徑引入本地模塊或JSON文件,路徑會(huì)根據(jù)__dirname定義的目錄名或當(dāng)前工作目錄進(jìn)行處理
到此這篇關(guān)于一文詳解node.js有哪些全局對(duì)象呢的文章就介紹到這了,更多相關(guān)node.js全局對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows上node.js的多版本管理工具用法實(shí)例分析
這篇文章主要介紹了Windows上node.js的多版本管理工具用法,結(jié)合實(shí)例形式分析了Windows平臺(tái)上node.js多版本管理工具nvm-windows的相關(guān)使用技巧,需要的朋友可以參考下2019-11-11
node.js中的querystring.stringify方法使用說明
這篇文章主要介紹了node.js中的querystring.stringify方法使用說明,本文介紹了querystring.stringify的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
前端常見面試題之a(chǎn)sync/await和promise的區(qū)別
async/await是異步代碼的新方式,以前的方法有回調(diào)函數(shù)和Promise,下面這篇文章主要給大家介紹了關(guān)于前端常見面試題之a(chǎn)sync/await和promise區(qū)別的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
Node.js中環(huán)境變量process.env的一些事詳解
這篇文章主要給大家介紹了關(guān)于Node.js中環(huán)境變量process.env的一些事,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
Node.js與MySQL交互操作及其注意事項(xiàng)
這篇文章給大家主要介紹了Node.js與MySQL交互操作及其注意事項(xiàng),非常的詳細(xì),有相同需求的小伙伴可以參考下2016-10-10
詳解electron如何攔截網(wǎng)絡(luò)請(qǐng)求并處理響應(yīng)
這篇文章主要為大家詳細(xì)介紹了electron如何攔截網(wǎng)絡(luò)請(qǐng)求并處理響應(yīng),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12

