if i take class TodoItem item outside the function and instead write return new TodoItem(), i can not access uid and other properties. and i dont know why as the object is being created inside the function so it should have took that in to scope too? i think.
function TodoItemFactory(todoItem = {}) {
const uid = todoItem.uid || utils.generateRandomString()
const createdTime = todoItem.createdTime || new Date()
let title = todoItem.title || ''
let modifiedTime = todoItem.modifiedTime || createdTime
let isCompleted = todoItem.isCompleted || false
let isDeleted = todoItem.isDeleted || false
return new (class TodoItem {
setTitle(newTitle) {
title = newTitle
this.setModifiedTimeToCurrentTime()
}
setModifiedTimeToCurrentTime() {
modifiedTime = new Date()
}
setIsCompleted(bool) {
isCompleted = bool
this.setModifiedTimeToCurrentTime()
}
setIsDeleted(bool) {
isDeleted = bool
this.setModifiedTimeToCurrentTime()
}
getAllProperties() {
return {
uid, createdTime, modifiedTime, isDeleted, isCompleted, title
}
}
})()
}