1. 程式人生 > 其它 >Node. js 有哪些全域性物件?

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

用來列印stdoutstderr

最常用的輸入內容的方式: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])

callbackdelay毫秒重複執行一次

clearInterval則為對應發取消定時器的方法

clearTimeout、setTimeout

設定延時器與清除延時器

setTimeout(callback,delay[,...args])

callbackdelay毫秒後執行一次

clearTimeout則為對應取消延時器的方法

global

全域性名稱空間物件,牆面講到的processconsolesetTimeout等都有放到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