溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Node. js中有哪些全局對象

發(fā)布時(shí)間:2021-06-15 11:18:18 來源:億速云 閱讀:228 作者:Leah 欄目:web開發(fā)

Node. js中有哪些全局對象,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

 一、是什么

在瀏覽器 JavaScript 中,通常window 是全局對象, 而 Nodejs中的全局對象是 global

在NodeJS里,是不可能在最外層定義一個(gè)變量,因?yàn)樗械挠脩舸a都是當(dāng)前模塊的,只在當(dāng)前模塊里可用,但可以通過exports對象的使用將其傳遞給模塊外部

所以,在NodeJS中,用var聲明的變量并不屬于全局的變量,只在當(dāng)前模塊生效

像上述的global全局對象則在全局作用域中,任何全局變量、函數(shù)、對象都是該對象的一個(gè)屬性值

二、有哪些

將全局對象分成兩類:

  • 真正的全局對象

  • 模塊級別的全局變量

真正的全局對象

下面給出一些常見的全局對象:

  • Class:Buffer

  • process

  • console

  • clearInterval、setInterval

  • clearTimeout、setTimeout

  • global

Class:Buffer

可以處理二進(jìn)制以及非Unicode編碼的數(shù)據(jù)

在Buffer類實(shí)例化中存儲了原始數(shù)據(jù)。Buffer類似于一個(gè)整數(shù)數(shù)組,在V8堆原始存儲空間給它分配了內(nèi)存

一旦創(chuàng)建了Buffer實(shí)例,則無法改變大小

process

進(jìn)程對象,提供有關(guān)當(dāng)前過程的信息和控制

包括在執(zhí)行node程序的過程中,如果需要傳遞參數(shù),我們想要獲取這個(gè)參數(shù)需要在process內(nèi)置對象中

啟動(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)等

Node. js中有哪些全局對象

console

用來打印stdout和stderr

最常用的輸入內(nèi)容的方式:console.log

console.log("hello");

清空控制臺:console.clear

console.clear

打印函數(shù)的調(diào)用棧:console.trace

function test() {     demo(); }  function demo() {     foo(); }  function foo() {     console.trace(); }  test();

Node. js中有哪些全局對象

clearInterval、setInterval

設(shè)置定時(shí)器與清除定時(shí)器

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

callback每delay毫秒重復(fù)執(zhí)行一次

clearInterval則為對應(yīng)發(fā)取消定時(shí)器的方法

clearTimeout、setTimeout

設(shè)置延時(shí)器與清除延時(shí)器

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

callback在delay毫秒后執(zhí)行一次

clearTimeout則為對應(yīng)取消延時(shí)器的方法

global

全局命名空間對象,墻面講到的process、console、setTimeout等都有放到global中

console.log(process === global.process) // true

模塊級別的全局對象

這些全局對象是模塊中的變量,只是每個(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

對當(dāng)前模塊的引用,通過module.exports 用于指定一個(gè)模塊所導(dǎo)出的內(nèi)容,即可以通過 require() 訪問的內(nèi)容

require

用于引入模塊、 JSON、或本地文件??梢詮?node_modules 引入模塊。

可以使用相對路徑引入本地模塊或JSON文件,路徑會根據(jù)__dirname定義的目錄名或當(dāng)前工作目錄進(jìn)行處理

關(guān)于Node. js中有哪些全局對象問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI