命名空间JavaScript类,但保留相同的#39;这个'

时间:2015-11-20 19:23:02

标签: javascript node.js

我正在构建一个相当大的node.js客户端库,我希望能够命名空间'它的一部分,以使其更有条理。例如:

var client = new Client(config);

client.activities.get(activityId, function(activity) {
     ...
});

...

client.user.get(userId, function(user) {
     ...
});

我目前正在尝试在模块中执行类似的操作:

function Client(config) {
    this.config = config;
}

Client.prototype.activities = require('./activities');
Client.prototype.user = require('./user');

module.exports = Client;

但是当'得到'在活动' submodule'," this"当然是用于模块,而不是外部客户端功能。基本上,两个子模块都需要访问外部配置信息(在此示例中为' config')。在node.js中执行此操作的最佳做​​法是什么?

1 个答案:

答案 0 :(得分:1)

我认为您的计划存在建模问题,new X()会将X.prototype的每个属性引用复制到新项目中;例如,X.myFunctionX.prototype.myFunction完全相同;但不会创建myFunction的新副本

听起来如果activities是客户端的一部分(与StreetAddress可能相同),您实际上希望activities成为一个类,而不是一个模块,并且Client在构建时创建实例。这不是prototype对我有用的东西。如果我错了,也许你可以展示一个基本操作的例子activities将用于。