2016-03-08 79 views

回答

2

大多數情況下,人們使用名爲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

最後,你可能不應該首先命名變量moduleexports

1

只是有人將module.exports的快捷方式保存到局部變量中,因此可以參考self.something而不是module.exports.something。它也可以同樣是:

var myModule = module.exports; 

名稱self在語言沒有特殊的意義 - 只是一個變量名 - 儘管它經常被用來作爲this在封閉保存的值(這是不是它的存在用於這裏)。

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

相關問題