module.exports传递问题(突然发现的问题到现在还没找到原因,求解!)
发布于 10 年前 作者 zero20121222 4512 次浏览 最后一次编辑是 8 年前 来自 问答

分装了一个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 回复

单require = 直接插入。

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

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

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

111

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

123

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

全局惹的祸

回到顶部