前者是 module.exports 的代替变量? 后者 是 到处User 变量?
module.exports = User;
User = ?
var User = function(){ }
这个正确:
var User = function(){ } module.exports = User;
这个不全:
var User = module.exports; module.exports 赋过值了吗?
我觉得这2个好像是一样的.
module.exports的默认值是{}。
module.exports
{}
module.exports等价于this。
this
因此这两段就是var User = this和this = User了。
var User = this
this = User
完全错误。
@Jackson 事实证明this就是指向module.exports╮(╯_╰)╭
@a272121742 show me the code.
这叫什么代码?哪有这么写的? 模块的 var 变量就是这个模块的全局变量。整个程序的运行期间都会存在。 exports 跟 module.exports 是模块的输出。 并且exports 是module.exports 的别名。假如同时对他们两个赋值,module.exports 会覆盖 exports 的变量。
一个是获取exports变量的引用值,一个是对exports变量赋值,注意这跟this没有任何关闭,纯粹就是简单的赋值操作
@Jackson https://github.com/joyent/node/blob/master/lib/module.js#L449
@imzshh 这个代码的原理肯定就是这样的。但是this是this不要混为一谈。。模块规范里,从来就没有this的说法。