In JavaScript, the factory pattern isn't much more than a function that returns an object without using the new
keyword. ES6 arrow functions allow us to create small factory functions that implicitly return an object each time.
However, in many cases it may be more memory efficient to create new instances instead of new objects each time.
Facotry:
const createUser = ({ firstName, lastName, email }) => ({
firstName,
lastName,
email,
fullName() {
return `${this.firstName} ${this.lastName}`;
}
});
Class:
class User {
constructor(firstName, lastName, email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
The fullName
method is the same for all the objects that were created. By creating new instances, the fullName
method is available on the prototype instead of on the objec, which saves memory.
const user1 = new User({
firstName: "John",
lastName: "Doe",
email: "[email protected]"
});
const user2 = new User({
firstName: "Jane",
lastName: "Doe",
email: "[email protected]"
});
user1.fullName === user2.fullName // true
const user1 = createUser({
firstName: "John",
lastName: "Doe",
email: "[email protected]"
})
const user2 = createUser({
firstName: "Jane",
lastName: "Doe",
email: "[email protected]"
})
user1.fullName === user2.fullName // false
标签:const,firstName,pattern,Javascript,Factory,lastName,new,fullName,email From: https://www.cnblogs.com/Answer1215/p/16628446.html