Gli ultimi tutorial di sviluppo web
 

JavaScript Prototipi di oggetti


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:

Esempio

myFather.nationality = "English";
Prova tu stesso "

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.

Esempio

Person.nationality = "English";
Prova tu stesso "

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.