module.exports传递问题(突然发现的问题到现在还没找到原因,求解!)
 发布于 11 年前  作者 zero20121222  5015 次预览  最后一次回复是 11 年前  来自 问答 

分装了一个Obj对象(User.js)

User = function(){
	var pri = {
		id : null,
		name : null
	}
	var pub = {
		setId : function(id){
			pri.id = id;
		},
		getId : function(){
			return pri.id;
		},
		setName : function(name){
			pri.name = name;
		},
		getName : function(){
			return pri.name;
		}
		toData : function(){
			return pri;
		}
	}
	return pub;
}
module.exports = User;
\n```

### 外部引用这个Obj(UserT.js)
** 在这里直接require引用进来就ok了,
不需要使用定义var User = require("../modules/User"); 
var user = new User();
而是可以直接使用对象。why?
**
```js\n
require("../modules/User");
UserT = (function(){
	var user = new User();
	function UserT(){
	}
	UserT.prototype.init = function(){
		user.setName("Michael");
	}

	UserT.prototype.getName = function(){
		console.log("message");
	}
});
module.exports = UserT;
\n```

### 比较奇怪的是下面的问题(Test.js)
** 
在这边可以无需引用User就可以直接得到User对象???
Why?
**
```js\n
require("./UserT");
console.log(UserT);
console.log(User);
\n```
5 回复
MiguelValentine

单require = 直接插入。

zxc122333

User.js定义的User函数没有var

// 由于var 被你吃了,所以User被定义到了global上
User = function(){.....}
// 这一行去掉也不会影响你的结果
// module.exports = User;

我去,换markdown引擎了??原来的``` 哪去了?换成什么了

111
zxc122333

@alsotang 预览的时候```没有效果

123
alsotang

@zxc122333 嗯嗯,预览的时候没有。换了markdown编辑器。

alsotang

全局惹的祸