Objects in JavaScript are essentially key-value pairs. These pairs are called properties. Methods are properties that are functions. JavaScript is a prototype-based language. There is no distinction between classes and instances of those classes. This page does a good job of explaining the differences between a class-based (C++) and prototype-based (JavaScript) language.
var person = {
fname: 'Dalton',
lname: 'Cole',
fullName: function() {
return this.fname + ' ' + this.lname;
},
printName: function(func=console.log) {
func(this.fullName());
}
};
console.log(person.fullName()); // Dalton Cole
person.printName(); // Dalton Cole
var person2 = new Object();
person2.fname = 'Dalton';
person2.lname = 'Cole';
// Shallow Copy
var person3 = Object.assign({}, person);
person.fname = 'Colton';
person['lname'] = 'Dal';
person.printName(); // Colton Dal
person2.printName(); // Dalton Cole
function Person(first, last) {
this.firstname = first;
this.lastname = last;
this.fullName = function() {
console.log(this.firstname + ' ' + this.lastname);
}
}
let dalton = new Person('Dalton', 'Cole')
let colton = new Person('Colton', 'Dal')
dalton.fullName()
colton.fullName()
The prototype
property allows you to add new methods to object constructors.
function Person(first, last) {
this.firstName = first;
this.lastName = last;
}
Person.prototype.fullName = function() {
return this.firstName = ' ' + this.lastName;
}
Person.property.fullName2 = () => this.firstName + ' ' + this.lastName; // Won't work as expected
let dalton = new Person('Dalton', 'Cole');
console.log(dalton.fullName()); // "Dalton Cole"
console.log(dalton.fullName2()); // "undefined undefined"