Object create è un metodo utilizzato per creare degli oggetti in JavaScript. Quello che vi presento è dunque un’alternativa ai metodi già visti nelle precedenti lezioni, utili alla creazione di oggetti in JavaScript.

Ricordiamo comunque che l’utilizzo degli oggetti letterali è tutt’oggi la pratica più comune e diffusa, grazie alla sua semplicità d’uso.

Sintassi object create

Object create consente di creare un nuovo oggetto partendo dall’oggetto prototipo e permette anche di specificare le proprietà dell’oggetto creato.

Dunque segue questa sintassi:

Object.create(prototypeObject, propertiesObject)

Dove prototypeObject rappresenta l’oggetto prototipo, mentre propertiesObject rappresenta le proprietà del nuovo oggetto creato. Queste proprietà possono anche essere dei metodi.

Se prototypeObject è uguale a null, si genera un oggetto vuoto, cioè senza una struttura. Dunque scrivere:

var mioOggetto = Object.create(null);

Equivale a scrivere semplicemente questo codice:

var mioOggetto = {};

Invece se propertiesObject è uguale a null, si genera un’eccezione di tipo TypeError.

Dunque questo codice:

var mioOggetto = Object.create(null, null);

produrrà questa eccezione: Uncaught TypeError: can’t convert null to object.

Il parametro propertiesObject può dunque essere opzionale oppure se presente specifica i descrittori di proprietà secondo il metodo Object.defineProperties(). Questo metodo, che affronteremo nella prossima lezione, serve a definire nuove proprietà oppure a modificare quelle esistenti.

Esempio object create

Facciamo adesso un semplice esempio creando un oggetto auto1 partendo dal prototipo auto che è stato costruito con due sole proprietà. La proprietà tipo che rappresenta il tipo di alimentazione della nostra macchina. Mentre la proprietà display è una funzione che visualizza nella console il tipo di alimentazione.

var auto = {
  tipo: 'benzina',
  display: function() {
    console.log(this.tipo);
  }
};

var auto1 = Object.create(auto);
auto1.display();

Notiamo che in questo esempio il parametro propertiesObject non è definito, come abbiamo spiegato prima, infatti è opzionale.

Dopo su auto1 richiamiamo il metodo che abbiamo creato, display().

Modifichiamo adesso l’esempio aggiungendo una seconda auto a cui modificheremo il valore della proprietà tipo, in questo modo:

var auto2 = Object.create(auto);
auto2.tipo = 'diesel';
auto2.display();

In questa lezione abbiamo semplicemente mostrato come creare un oggetto utilizzando il metodo object.create. Nella prossima lezione utilizzeremo ancora questo metodo utilizzando anche il metodo Object.defineProperties().

Alcuni link utili

Indice tutorial JavaScript

Le funzioni di callback

Le function callback usate con i metodi e con gli array

Esempi funzioni di callback

Come utilizzare le callback e setTimeout

Cifrario di Cesare online

Come realizzare un convertitore da decimale a binario, ottale ed esadecimale