模組global
全域對象,所有腳本均可存取的基礎對象
物件
Buffer
二進位資料緩存對象,用於io讀寫的資料處理,參見Buffer對象。
1Buffer global.Buffer;
URL
1UrlObject global.URL;
TextDecoder
TextDecoder解碼對象,參見TextDecoder對象。
1TextDecoder global.TextDecoder;
TextEncoder
TextEncoder編碼對象,參見TextEncoder對象。
1TextEncoder global.TextEncoder;
console
控制台存取對象
1console global.console;
process
行程對象
1process global.process;
performance
基礎效能監控模組
1performance global.performance;
靜態函數
run
運行一個腳本
1static global.run(String fname);
呼叫參數:
- fname: String, 指定要執行的腳本路徑
require
載入一個模組並返回模組對象,更多資訊參考@ref module
1static Value global.require(String id);
呼叫參數:
- id: String, 指定要載入的模組名稱
回傳結果:
- Value, 傳回載入模組的引出對象
require 可用於載入基礎模組,檔案模組。
基礎模組是沙箱創建時初始化的模組,引用時只需傳遞對應的id,例如require("net")。
文件模組是使用者自訂模組,引用時需傳遞以./ 或../ 開頭的相對路徑。檔案模組支援.js, .jsc 和 .json文件。
檔案模組也支援package.json 格式,當模組為目錄結構時,require 會先查詢package.json 中的main,而未發現則嘗試載入路徑下的index.js, index.jsc 或index.json。
若引用路徑不是./ 或../ 開頭,且非基礎模組,require 從目前模組所在路徑下的node_modules 查找,並上級目錄遞歸。
基礎流程如下:
setTimeout
在指定的時間後呼叫函數
1
2
3static Timer global.setTimeout(Function callback,
Number timeout = 1,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- timeout: Number, 指定延時的時間,以毫秒為單位。超過2^31 的話,立即執行。
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearTimeout
清除指定的計時器
1static global.clearTimeout(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setInterval
每間隔指定的時間後呼叫函數
1
2
3static Timer global.setInterval(Function callback,
Number timeout,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- timeout: Number, 指定間隔的時間,以毫秒為單位。超過2^31 的話,立即執行。
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearInterval
清除指定的計時器
1static global.clearInterval(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setHrInterval
每間隔指定的時間後呼叫函數,這是一個高精度計時器,會主動打斷正在執行的JavaScript 腳本執行計時器
1
2
3static Timer global.setHrInterval(Function callback,
Number timeout,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- timeout: Number, 指定間隔的時間,以毫秒為單位。超過2^31 的話,立即執行。
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
由於setHrInterval 的計時器會中斷正在運行的程式碼執行回調,因此不要在回調函數內修改可能影響其它模組的數據,或者在回調中呼叫任何標記為async 的api 函數,否則將會產生不可預測的結果。例如:
1
2
3
4
5
6
7
8
9
10var timers = require('timers');
var cnt = 0;
timers.setHrInterval(() => {
cnt++;
}, 100);
while (cnt < 10);
console.error("===============================> done");
這段程式碼中,第8 行的迴圈並不會因為cnt 的改變而結束,因為JavaScript 在優化程式碼時會認定在這個循環過程中cnt 不會被改變。
clearHrInterval
清除指定的計時器
1static global.clearHrInterval(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
setImmediate
下一個空閒時間立即執行回呼函數
1
2static Timer global.setImmediate(Function callback,
...args);
呼叫參數:
- callback: Function, 指定回呼函數
- args: ..., 額外的參數,傳入到指定的callback 內,可選。
回傳結果:
- Timer, 傳回定時器對象
clearImmediate
清除指定的計時器
1static global.clearImmediate(Value t);
呼叫參數:
- t: Value, 指定要清除的定時器
btoa
以base64方式編碼數據
1
2static String global.btoa(Buffer data,
Boolean url = false);
呼叫參數:
回傳結果:
- String, 返回編碼的字串
atob
以base64方式解碼字串為二進位數據
1static Buffer global.atob(String data);
呼叫參數:
- data: String, 要解碼的字串
回傳結果:
- Buffer, 返回解碼的二進位數據
gc
強制要求進行垃圾回收
1static global.gc();
靜態屬性
global
Object, 全域對象
1static readonly Object new global;
globalThis
Object, 全域對象
1static readonly Object global.globalThis;