【发布时间】:2014-01-28 16:17:57
【问题描述】:
我喜欢 javascript 和 Node,但是当我声明对象时.. 我不知道什么是最佳实践和高性能。我对高性能感兴趣。
"use strict";
module.exports = SignUpBusiness;
SignUpBusiness.__proto__ = new SignUpBusiness;
function SignUpBusiness(){
this._certificate = null;
this._db = require('mongoose');
this._model = require('../models/User.js');
this._userModel = this._db.model('User', this._model.UserSchema);
this._result = false;
this.runLoginProcess = function(credentials , next){
//code
}
// etc.
}
或者这样:
"use strict";
module.exports = {
_certificate : null,
_db : require('mongoose'),
_model : require('../models/User.js'),
_userModel : this._db.model('User', this._model.UserSchema),
_result : false,
runLoginProcess: function(credentials , next){
//code
}
// etc.
}
非常感谢! 还有..对不起我的英语。
【问题讨论】:
-
我更喜欢第一个,这样更容易获得正确的范围。
-
你会创建这个对象一次还是多次?
-
只创建一次并导出到 NodeJS 中的 module.exports。控制器调用业务层(这段代码)来执行复杂的流程。
-
Sergio 给出了迄今为止最好的答案:“视情况而定。”然而,(没有冒犯塞尔吉奥)这比他写的要多。所以没有一种方法是正确,而另一种不正确。我已经使用了这两种方法,具体取决于上下文。 (我说两者都不正确,但问题中出现的两个示例当前都包含有问题或完全错误的代码。例如,第二个示例中的
this._db.model('User', this._model.UserSchema)没有做任何明智的事情。) -
“视情况而定”的答案并不好,总有更好的办法。也许问题是我没有给出关于代码操作的一些细节。对不起。我喜欢这 2 种方式,但我正在寻找的是最佳性能而不牺牲美观且可理解的代码。为什么有问题的代码行? @路易斯
标签: javascript node.js javascript-objects ecmascript-5