Prototipi di oggetti JavaScript
Tutti gli oggetti JavaScript ereditano proprietà e metodi da un prototipo.
Nel capitolo precedente abbiamo imparato come usare un costruttore di oggetti :
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Abbiamo anche appreso che non è possibile aggiungere una nuova proprietà a un costruttore di oggetti esistente:
Esempio
Person.nationality = "English";
Per aggiungere una nuova proprietà a un costruttore, devi aggiungerla alla funzione di costruzione:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
Eredità del prototipo
Tutti gli oggetti JavaScript ereditano proprietà e metodi da un prototipo:
Date
gli oggetti ereditano daDate.prototype
Array
gli oggetti ereditano daArray.prototype
Person
gli oggetti ereditano daPerson.prototype
Si Object.prototype
trova in cima alla catena di eredità del prototipo:
Date
oggetti, Array
oggetti e Person
oggetti ereditano da Object.prototype
.
Aggiunta di proprietà e metodi agli oggetti
A volte vuoi aggiungere nuove proprietà (o metodi) a tutti gli oggetti esistenti di un determinato tipo.
A volte vuoi aggiungere nuove proprietà (o metodi) a un costruttore di oggetti.
Utilizzo della proprietà prototipo
La proprietà JavaScript prototype
consente di aggiungere nuove proprietà ai costruttori di oggetti:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
La proprietà JavaScript prototype
consente inoltre di aggiungere nuovi metodi ai costruttori di oggetti:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
Modifica solo i tuoi prototipi . Non modificare mai i prototipi di oggetti JavaScript standard.