【发布时间】:2020-09-29 17:59:26
【问题描述】:
所以我一直在研究工厂函数和类,寻找创建具有多个函数/操作的多个对象的最优化方法。
假设我正在做一个 TODO 列表,我创建的每个任务都有 7 个参数,甚至更多的操作,但主要是 getter 和 setter。
如果我使用工厂函数创建这些任务中的每一个,那么每个创建的对象都会在内存中为每个创建的任务提供近十几个函数,对吗?
既然我们有Object.create() 来创建一个对象作为另一个对象的原型,那么最好将taskOperations 分离为一个独立对象并使用Object.create(taskOperations) 就像我在下面所做的那样,以避免用相同的方法阻塞内存创建的所有对象的函数?
这是最优化的方式还是使用类更有效?
const taskOperations = {
getTitle() {
return this.title;
},
setTitle(title) {
this.title = title;
},
getDateCreated() {
return this.dateCreated;
},
setDateDue(dateDue) {
this.dateDue = dateDue;
},
getDateDue() {
return this.dateDue;
},
setPriority(priority) {
this.priority = priority;
},
getPriority() {
return this.priority;
},
};
// Task factory
const createTask = (title) => {
let task = Object.create(taskOperations);
task.title= title;
task.dateCreated= new Date();
task.dateDue= "";
task.priority= false;
task.note= "";
task.done= false;
task.projectID= 0;
return task
};
【问题讨论】:
-
这是假设在您的实际代码中,您的任务操作不仅仅是 getter/setter,而是执行服务/业务逻辑的函数?
-
@ggordon 目前只有 getter 和 setter,但会有更复杂的操作。但是有兴趣知道这种情况是否会在这种情况下产生影响。
-
谢谢,我分享了一些关于减少内存使用的想法以及您可以考虑进一步优化的其他模式。
标签: javascript class javascript-objects factory object-create