查看http://nodejs.org/api/modules.html#modules_cycles,了解如何在node中进行处理。
您可以通过多种方式解决问题,例如将依赖项传递给实例(也称为 依赖项注入)
// user.jsvar User = function (Room) { this.Room = Room; };User.prototype.test = function () { return new this.Room();};module.exports = User;// room.jsvar Room = function (User) { this.User = User; };Room.prototype.test = function () { return new this.User();};module.exports = Room;// index.jsvar User = require('./user.js');var Room = require('./room.js');var user = new User(Room);var room = new Room(User);另一种方法是仅在需要时才需要文件
// user.jsvar User = function () {};User.prototype.test = function () { var Room = require('./room'); return new Room();};module.exports = User;// room.jsvar Room = function () {};Room.prototype.test = function () { var User = require('./user'); return new User();};module.exports = Room;// index.jsvar User = require('./user.js');var Room = require('./room.js');var user = new User();var room = new Room();这样,您的出口就由您需要的时间定义。
但是通常,如果您具有循环依赖关系,那么您做错了事情,应该考虑一下您的体系结构。如果
User需要创建新的东西,
Rooms并且
Room需要创建新的东西
Users,似乎他们都负有太多责任。可能您需要第三个组件,该组件负责创建正确的实例并将其传递给
Roomand
User,而不是让它们直接实例化它们。



