【发布时间】:2017-11-23 12:17:28
【问题描述】:
调用函数是否占用与在 javascript node v8.5.0 中创建构造函数实例相同的资源和时间?
我发现他们给我的结果是一样的:
var repo = function () {
var db = {};
var get = function (id) {
console.log('Getting task ' + id);
return {
name: 'new task from db'
}
}
var save = function (task) {
console.log('Saving ' + task.name + ' to the db');
}
console.log('newing up task repo');
return {
get: get,
save: save
}
}
module.exports = repo();
当我将 module.exports = repo(); 替换为 module.exports = new repo; 时,它给了我相同的结果,但我需要知道哪个性能更好。
【问题讨论】:
-
恕我直言,没关系,因为您只有少量的 repo 对象;理想情况下一个。你只会制作一次
repo()或new repo。 -
差别很小,不值得担心。你应该决定你希望你的函数如何被使用。
new还是没有new? -
如果是这样,您使用@deceze 的最佳做法是什么?
-
我会写一个
class来代替这种模块构造函数,然后它会和new一起使用。但是我可能不会导出一个没有机会实例化另一个实例的单例;在那种程度上强制执行单一性根本没有用。
标签: javascript function object constructor