我看到一行代码:
var self = module.exports ;
在nodejs项目中。
我知道" module.exports"的含义,我找不到有关此代码的任何信息。有人可以帮帮我吗?
答案 0 :(得分:2)
大多数时候,人们使用名为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
命名。
答案 1 :(得分:1)
只是有人将module.exports
的快捷方式保存到本地变量中,因此可以引用self.something
而不是module.exports.something
。它也可以是:
var myModule = module.exports;
名称self
在语言中没有特殊含义 - 只是变量名称 - 尽管它通常用作闭包中this
的保存值(这不是它在这里使用的内容) )。
通常不需要此额外快捷方式,因为exports
已经是module.exports
的预定义快捷方式,因此使用名为self
的变量必须只是个人偏好编码样式或正在由没有意识到exports
已经是预定义快捷方式的人使用。