Ogni oggetto JavaScript ha un prototipo. Il prototipo è anche un oggetto.
Tutti gli oggetti JavaScript ereditano le loro proprietà ei metodi da loro prototipo.
Prototipi JavaScript
Tutti gli oggetti JavaScript ereditano le proprietà ei metodi da loro prototipo.
Gli oggetti creati utilizzando un oggetto letterale, o con new Object() , ereditano da un prototipo chiamato Object.prototype.
Gli oggetti creati con new Date() ereditano il Date.prototype.
Il Object.prototype è sulla parte superiore della catena di prototipi.
Tutti gli oggetti JavaScript (Date, Array, RegExp, Function, ....) ereditano dalla Object.prototype .
La creazione di un prototipo
Il metodo standard per creare un prototipo di oggetto è quello di utilizzare una funzione oggetto costruttore:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Con una funzione di costruzione, è possibile utilizzare la new parola chiave per creare nuovi oggetti dello stesso prototipo:
Esempio
var myFather = new Person("John", "Doe", 50, "blue");
var myMother = new Person("Sally", "Rally", 48, "green");
Prova tu stesso " La funzione di costruzione è il prototipo per Person oggetti.
È considerato buona pratica alla funzione nome del costruttore con una prima lettera maiuscola.
Aggiunta di proprietà e metodi per gli oggetti
A volte si desidera aggiungere nuove proprietà (o metodi) per un oggetto esistente.
A volte si desidera aggiungere nuove proprietà (o metodi) per tutti gli oggetti esistenti di un dato tipo.
A volte si desidera aggiungere nuove proprietà (o metodi) per un prototipo di oggetto.
Aggiunta di una proprietà di un oggetto
L'aggiunta di una nuova proprietà di un oggetto esistente è facile:
L'immobile verrà aggiunto al myFather . Per non myMother . Non a qualsiasi altro oggetto persona.
L'aggiunta di un metodo di un oggetto
L'aggiunta di un nuovo metodo per un oggetto esistente è anche facile:
Esempio
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
Prova tu stesso " Il metodo verrà aggiunto al myFather . Per non myMother .
L'aggiunta di proprietà di un prototipo
Non è possibile aggiungere una nuova proprietà per un prototipo stesso modo in cui si aggiunge una nuova proprietà di un oggetto esistente, perché il prototipo non è un oggetto esistente.
Per aggiungere una nuova proprietà per un costruttore, è necessario aggiungerlo 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"
}
Prova tu stesso " proprietà prototipo può avere valori prototipo (valori di default).
Aggiunta di metodi a un prototipo
La vostra funzione di costruzione può anche definire i metodi:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {return this.firstName + " " + this.lastName;};
}
Prova tu stesso " Utilizzando il prototype proprietà
La JavaScript prototype proprietà consente di aggiungere nuove proprietà ad un prototipo esistente:
Esempio
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";
Prova tu stesso " La proprietà prototype JavaScript permette anche di aggiungere nuovi metodi per un prototipo esistente:
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;
};
Prova tu stesso " Solo di modificare i propri prototipi. Non modificare i prototipi di oggetti JavaScript standard.