Factory pattern
Factory pattern
Function User(name, birthday) {
// only visible from other methods inside User
function calcAge() {
return new Date().getFullYear() - birthday.getFullYear();
}
return {
sayHi() {
alert(`${name}, age:${calcAge()}`);
}
};
}
let user = User("John", new Date(2000, 0, 1));
user.sayHi(); // John, age:17 We can create a class without using new at all.
The only benefit of this method is that we can omit new: write let user = User(...) instead of let user = new User(...). In other aspects it's almost the same as the functional pattern.
Semantic portal