Node. js 有哪些全域性物件?
一、是什麼
在瀏覽器JavaScript
中,通常window
是全域性物件, 而Nodejs
中的全域性物件是global
在NodeJS
裡,是不可能在最外層定義一個變數,因為所有的使用者程式碼都是當前模組的,只在當前模組裡可用,但可以通過exports
物件的使用將其傳遞給模組外部
所以,在NodeJS
中,用var
宣告的變數並不屬於全域性的變數,只在當前模組生效
像上述的global
全域性物件則在全域性作用域中,任何全域性變數、函式、物件都是該物件的一個屬性值
二、有哪些
將全域性物件分成兩類:
-
真正的全域性物件
-
模組級別的全域性變數
真正的全域性物件
下面給出一些常見的全域性物件:
-
Class:Buffer
-
process
-
console
-
clearInterval、setInterval
-
clearTimeout、setTimeout
-
global
Class:Buffer
可以處理二進位制以及非Unicode
編碼的資料
在Buffer
類例項化中儲存了原始資料。Buffer
類似於一個整數陣列,在V8堆原始儲存空間給它分配了記憶體
一旦建立了Buffer
例項,則無法改變大小
process
程序物件,提供有關當前過程的資訊和控制
包括在執行node
程式的過程中,如果需要傳遞引數,我們想要獲取這個引數需要在process
內建物件中
啟動程序:
node index.js 引數1 引數2 引數3
index.js檔案如下:
process.argv.forEach((val,index)=>{
console.log(`${index}:${val}`);
});
輸出如下:
/usr/local/bin/node
/Users/mjr/work/node/process-args.js
引數1
引數2
引數3
除此之外,還包括一些其他資訊如版本、作業系統等
console
用來列印stdout
和stderr
最常用的輸入內容的方式:console.log
console.log("hello");
清空控制檯:console.clear
console.clear
列印函式的呼叫棧:console.trace
functiontest(){
demo();
}
functiondemo(){
foo();
}
functionfoo(){
console.trace();
}
test();
clearInterval、setInterval
設定定時器與清除定時器
setInterval(callback,delay[,...args])
callback
每delay
毫秒重複執行一次
clearInterval
則為對應發取消定時器的方法
clearTimeout、setTimeout
設定延時器與清除延時器
setTimeout(callback,delay[,...args])
callback
在delay
毫秒後執行一次
clearTimeout
則為對應取消延時器的方法
global
全域性名稱空間物件,牆面講到的process
、console
、setTimeout
等都有放到global
中
console.log(process===global.process)//true
模組級別的全域性物件
這些全域性物件是模組中的變數,只是每個模組都有,看起來就像全域性變數,像在命令互動中是不可以使用,包括:
- __dirname
- __filename
- exports
- module
- require
__dirname
獲取當前檔案所在的路徑,不包括後面的檔名
從/Users/mjr
執行node example.js
:
console.log(__dirname);
//列印:/Users/mjr
__filename
獲取當前檔案所在的路徑和檔名稱,包括後面的檔名稱
從/Users/mjr
執行node example.js
:
console.log(__filename);
//列印:/Users/mjr/example.js
exports
module.exports
用於指定一個模組所匯出的內容,即可以通過require()
訪問的內容
exports.name=name;
exports.age=age;
exports.sayHello=sayHello;
module
對當前模組的引用,通過module.exports
用於指定一個模組所匯出的內容,即可以通過require()
訪問的內容
require
用於引入模組、JSON
、或本地檔案。可以從node_modules
引入模組。
可以使用相對路徑引入本地模組或JSON
檔案,路徑會根據__dirname
定義的目錄名或當前工作目錄進行處理
參考文獻
- http://nodejs.cn/api/globals.html