我看到了一行代碼:在項目的NodeJS什麼「var self = module.exports;」意思?
var self = module.exports ;
。
我知道「module.exports」的含義,我找不到任何有關此代碼的信息。有人可以幫助我嗎?
我看到了一行代碼:在項目的NodeJS什麼「var self = module.exports;」意思?
var self = module.exports ;
。
我知道「module.exports」的含義,我找不到任何有關此代碼的信息。有人可以幫助我嗎?
大多數情況下,人們使用名爲self
的變量來存儲對可能在另一個函數上下文中被覆蓋的內容的引用。 (它可以被稱爲什麼:_this
,that
等)
例子:
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
的快捷方式保存到局部變量中,因此可以參考self.something
而不是module.exports.something
。它也可以同樣是:
var myModule = module.exports;
名稱self
在語言沒有特殊的意義 - 只是一個變量名 - 儘管它經常被用來作爲this
在封閉保存的值(這是不是它的存在用於這裏)。
通常不需要這種額外的快捷方式,因爲exports
已經是module.exports
預定義的快捷方式,以便使用命名self
的變量必須僅僅是一個個人喜好的編碼風格或正在使用的人誰不知道,exports
已經預定義的快捷鍵。
這很奇怪... – loadaverage