You can find all the code in this post at repo Github.
Object creation methods
Constructor-based
Recommend before ES6.
/**
* @param {string} firstName
* @param {string} lastName
* @param {number} age
*/
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.greet = function () {
console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
};
}
// Usage example
const person1 = new Person("John", "Doe", 30);
person1.greet(); // => Hello, my name is John Doe
const person2 = new Person("Jane", "Smith", 25);
person2.greet(); // => Hello, my name is Jane Smith
Class-based
Recommend after ES6.
class Person {
constructor(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
}
}
// Usage example
const person1 = new Person("John", "Doe", 30);
person1.greet(); // => 'Hello, my name is John Doe'
const person2 = new Person("Jane", "Smith", 25);
person2.greet(); // => 'Hello, my name is Jane Smith'
Object initializer
const person = {
firstName: "John",
lastName: "Doe",
age: 30,
greet: function () {
console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
},
};
person.greet(); // => 'Hello, my name is John Doe'
Object.create()
const personPrototype = {
greet: function () {
console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
},
};
const person = Object.create(personPrototype);
person.firstName = "John";
person.lastName = "Doe";
// Usage example
person.greet(); // => 'Hello, my name is John Doe'
Factory Pattern
/**
* @param {string} firstName
* @param {string} lastName
* @param {number} age
* @return {object}
*/
function createPerson(firstName, lastName, age) {
return {
firstName: firstName,
lastName: lastName,
age: age,
greet: function () {
console.log(`Hello, my name is ${this.firstName} ${this.lastName}`);
},
};
}
// Usage example
const person1 = createPerson("John", "Doe", 30);
person1.greet(); // => 'Hello, my name is John Doe'
const person2 = createPerson("Jane", "Smith", 25);
person2.greet(); // => 'Hello, my name is Jane Smith'