簡體   English   中英

“ var self = module.exports;”是什么意思?

[英]what does “var self = module.exports;” mean?

我看到了一行代碼:

var self = module.exports ;

在一個nodejs項目中。

我知道“ module.exports”的含義,並且找不到有關此代碼的任何信息。 有人可以幫助我嗎?

大多數時候,人們使用稱為self的變量來存儲對可能在另一個函數上下文中覆蓋的內容的引用。 (可以稱為任何名稱: _thisthat等等)

例:

    var lib = require('lib');

    var self = module.exports;        

    function exportModule(module) {
        // note that 'module' now refers to this function's argument
        // but that's ok because I stored 'module.exports' in 'self' earlier
        for(var p in module) {
           self[p] = module[p];
        }
    }        

    exportModule(lib);

重要的提示:

self可能是一個不好的變量名稱。 實際上,通常使用self來存儲函數的this (這是必需的,因為在新的函數范圍內this會自動被覆蓋)。 變量名稱self純粹是一個約定,但是破壞約定可能會使其他開發人員感到困惑。

更好的變量名稱可能是_exports

最后,您可能不應該首先為變量module命名或exports

只是將module.exports的快捷方式module.exports到本地變量中,因此可以引用self.something而不是module.exports.something 也可能是:

var myModule = module.exports;

名稱self在語言中沒有特殊含義-只是一個變量名-盡管經常在閉包中將其用作this值的保存值(此處未使用此名稱)。

通常不需要這種額外的快捷方式,因為exports已經是一個預定義的快捷module.exports所以使用變量命名的self必須僅僅是一個個人喜好的編碼風格或正在使用的人誰不知道, exports已經預定捷徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM