欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

module.exports和exports使用誤區(qū)案例分析

 更新時間:2023年04月03日 09:53:03   作者:?Aurora.  
module.exports和exports使用誤區(qū),使用require()模塊時,得到的永遠(yuǎn)都是module.exports指向的對象

module.exports和exports使用誤區(qū)

使用require()模塊時,得到的永遠(yuǎn)都是module.exports指向的對象

1.誤區(qū)一

exports.username = 'zs'
exports.sayHello = function() {
    console.log('Hello!');
}

module.exports = {
    gender: '男',
    age: 20
}

在這里插入圖片描述
在這里插入圖片描述
因?yàn)槟J(rèn)情況下,exports 和 module.exports 指向同一個對象,二者開始都是指向一個空對象,當(dāng)export指向新對象username="zs"后,此時二者都指向這 個對象,但是執(zhí)行后面代碼則是在內(nèi)存中新開辟一個空間存儲新對象 {gender:“男”,age:20} ,且把這個新對象的引用交給了module.exports,則module.exports就指向新的對象,不指向之前的對象了
所以這時候,如果使用require()模塊,得到的就是module.exports此時指向的對象

注意此處的module.exports已經(jīng)被重新定義!require()得到的是重新定義之后的導(dǎo)出對象!

2.誤區(qū)二

module.exports.username = 'zs'

exports = {
    gender:'男',
    age:22
}

在這里插入圖片描述
在這里插入圖片描述
exports 和 module.exports 開始指向一個空對象,當(dāng)module.export指向新對象username="zs"后,此時二者都指向這個對象,但是執(zhí)行后面代碼則是在內(nèi)存 中新開辟一個空間存儲新對象 {gender:“男”,age:20} ,且把這個新對象的引用交給了exports,但是module.exports指向?qū)ο?沒有變,還是指向之前的對象
所以使用require()模塊時,module.exports指向的對象還是原來的對象

注意:優(yōu)先級還是module.exports的最高?。equire()優(yōu)先引用的還是module.exports所導(dǎo)出的對象!

3.誤區(qū)三

exports.username = 'zs'

module.exports.gender = '男'

在這里插入圖片描述
在這里插入圖片描述
二者開始指向空對象,第一 行代碼通過exports引用關(guān)系掛載了一個name屬性,第二行又通過module.exports引用關(guān)系掛載了一個屬性age 這里不存在新對象 都是掛載屬性 這些屬性都被放在了開始二者指向的對象中,最終兩個屬性都在此對象中
此時使用require()模塊時,module.exports指向的對象沒有變 ,但是此時指向?qū)ο笊嫌袃蓚€屬性

注意:這里的module.exports.gender = '男'在module.exports導(dǎo)出對象的基礎(chǔ)上再次增加的屬性,module.exports所指向的地址并沒有改變!

4.誤區(qū)四

exports = {
    uesrname: 'zs',
    gender: '男'
}

module.exports = exports
module.exports.age = 22

在這里插入圖片描述
在這里插入圖片描述

同理二者開始指向同一空對象,執(zhí)行代碼,在內(nèi)存中定義了一個新對象,且把新對象掛載在exports上,此時exports就不指向之前的空對象 而指向新定義的對象,module.exports=exports這行代碼把export的引用關(guān)系通過等號賦值給了module.exports,則module.exports也不指向之前的空對象了,也指向新對象了,最后給module.exports指向的新對象又繼續(xù)掛載了一個age屬性
此時使用require()模塊時 ,module.exports指向的對象沒有變,但是此時指向?qū)ο笊嫌袃蓚€屬性

謹(jǐn)記,使用require()模塊時,得到的永遠(yuǎn)都是module.exports指向的對象
所以,為了防止這種混亂,以后在一個模塊中,不 要同時使用exports和module.exports

相關(guān)文章

  • Node.js中流(stream)的使用方法示例

    Node.js中流(stream)的使用方法示例

    Stream 是一個抽象接口,Node 中有很多對象實(shí)現(xiàn)了這個接口。下面這篇文章主要給大家介紹了關(guān)于Node.js中流(stream)的使用方法示例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • node.js中Util模塊作用教程示例詳解

    node.js中Util模塊作用教程示例詳解

    這篇文章主要為大家介紹了node.js中Util模塊的教程示例詳解,帶大家充分的了解node.js的util模塊,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 查詢Node.js版本信息的六種方法

    查詢Node.js版本信息的六種方法

    隨著應(yīng)用程序規(guī)模越來越龐大,Node.js版本的更新也日益頻繁,本文主要介紹了查詢Node.js版本信息的六種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • nodejs加密Crypto的實(shí)例代碼

    nodejs加密Crypto的實(shí)例代碼

    下面小編就為大家?guī)硪黄猲odejs加密Crypto的實(shí)例代碼。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 深入淺析NodeJs并發(fā)異步的回調(diào)處理

    深入淺析NodeJs并發(fā)異步的回調(diào)處理

    這篇文章主要介紹了NodeJs并發(fā)異步的回調(diào)處理的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • nodejs中的fiber(纖程)庫詳解

    nodejs中的fiber(纖程)庫詳解

    這篇文章主要介紹了nodejs中的fiber(纖程)庫詳解,本文講解了node-fibers的安裝、API介紹、方法使用示例等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 詳解使用 Node.js 開發(fā)簡單的腳手架工具

    詳解使用 Node.js 開發(fā)簡單的腳手架工具

    這篇文章主要介紹了詳解使用 Node.js 開發(fā)簡單的腳手架工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • node.js中ws模塊創(chuàng)建服務(wù)端與客戶端實(shí)例代碼

    node.js中ws模塊創(chuàng)建服務(wù)端與客戶端實(shí)例代碼

    在Node.js中提供了http模塊與https模塊,專用于創(chuàng)建HTTP服務(wù)器、HTTP客戶端,以及HTTPS服務(wù)器及HTTPS客戶端,同時實(shí)現(xiàn)這些服務(wù)器端與客戶端之中所需進(jìn)行的處理,下面這篇文章主要給大家介紹了關(guān)于node.js中ws模塊創(chuàng)建服務(wù)端與客戶端的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • nodejs socket服務(wù)端和客戶端簡單通信功能

    nodejs socket服務(wù)端和客戶端簡單通信功能

    這篇文章主要為大家詳細(xì)介紹了nodejs socket服務(wù)端和客戶端簡單通信功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 阿里云OSS實(shí)踐文件直傳基于服務(wù)端

    阿里云OSS實(shí)踐文件直傳基于服務(wù)端

    這篇文章主要為大家介紹了阿里云OSS實(shí)踐文件直傳基于服務(wù)端實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論