Same as:
john: {
firstname: "John",
lastname: "Doe",
greet: function() {
return `Hi ${this.firstname}`
}
}
With classes:
class Person {
constructor(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname
}
greet() {
return `Hi ${this.firstname}`
}
}
const john = new Person("John", "Doe")
class InformalPerson extends Person {
constructor(firstname, lastname) {
super(firstname, lastname)
}
greet() {
return `Yo ${this.firstname}`
}
}
Constructor function
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
const john = new Person("John", "Doe");
Convention: with capital letter (not to forget "new")
When creating with "new", you can use prototype to add methods (outside the constructor, to have it only once, not for each object):
Person.prototype.getFullName = function() {
return `${this.firstname} ${this.lastname}`
}
john.getFullName();