MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Sommario

La proprietà Object.prototype rappresenta l'oggetto prototipo di Object.

Property attributes of Object.prototype
Writable no
Enumerable no
Configurable no

Descrizione

In JavaScript, tutti gli oggetti sono discendenti di Object; tutti gli oggetti ereditano metodi e proprietà di Object.prototype (tranne nel caso l'oggetto abbia il prototipo uguale a null, quindi creati con il metodo Object.create(null)), anche se questi possono essere sovrascritti. Per esempio, i prototipi degli altri costruttori sovrascrivono la proprietà constructor e forniscono un loro metodo toString(). I cambiamenti al prototipo di Object vengono estesi a tutti gli oggetti, eccetto quelli che sovrascrivono le proprietà e i metodi cambiati.

Proprietà

Object.prototype.constructor
Specifica la funzione che ha creato l'oggetto a partire dal prototipo.
Object.prototype.__proto__
È un riferimento all'oggetto usato come prototipo quando l'oggetto è stato istanziato.
Object.prototype.__noSuchMethod__
Permette di definire una funzione che venga chiamata quando viene chiamato un metodo non definito.
Object.prototype.__count__
Rappresenta il numero di proprietà persenti in un oggetto, ma è stato rimosso.
Object.prototype.__parent__
Rappresenta il contesto di un oggetto, ma è stato rimosso.

Metodi

Object.prototype.__defineGetter__()
Associa una funzione a una proprietà di un oggetto. Quando si tenta di leggere il valore di tale proprietà, viene eseguita la funzione e restituito il valore che restituisce.
Object.prototype.__defineSetter__()
Associa una funzione a una proprietà di un oggetto. Quando si tenta di cambiare il valore di tale proprietà, viene eseguita la funzione.
Object.prototype.__lookupGetter__()
Restituisce la funzione definita tramite __defineGetter__().
Object.prototype.__lookupSetter__()
Restituisce la funzione definita tramite __defineSetter__().
Object.prototype.hasOwnProperty()
Determina se l'oggetto contiene direttamente una proprietà (non ereditata tramite il prototipo).
Object.prototype.isPrototypeOf()
Determina se un oggetto fa parte della catena dei prototipi dell'oggetto sul quale è richiamato questo metodo.
Object.prototype.propertyIsEnumerable()
Determina se l'attributo DontEnum di ECMAScript interno è presente.
Object.prototype.toSource()
Restituisce una stringa contenente il codice sorgente di un oggetto rappresentante l'oggetto sul quale questo metodo viene richiamato; puoi usare questo valore per creare un nuovo oggetto.
Object.prototype.toLocaleString()
Richiama toString().
Object.prototype.toString()
Restituisce la rappresentazione dell'oggetto sotto forma di stringa.
Object.prototype.unwatch()
Termina di osservare i cambiamenti di una proprietà dell'oggetto.
Object.prototype.valueOf()
Ritorna il valore primitivo dell'oggetto.
Object.prototype.watch()
Inizia a osservare i cambiamenti di una proprietà di un oggetto.
Object.prototype.eval()
Esegue una stringa di codice JavaScript nel contesto dell'oggetto, ma è stato rimosso.

Esempi

Siccome in JavaScript gli oggetti non sono sub-classabili in modo "standard", il prototipo è una soluzione utile per creare un oggetto che funzioni da "classe di base" che contenga dei metodi comuni a più oggetti. Per esempio:

var Persona = function() {
  this.saParlare = true;
};

Persona.prototype.saluta = function() {
  if (this.saParlare) {
    console.log('Ciao, mi chiamo ' + this.nome);
  }
};

var Dipendente = function(nome, titolo) {
  Persona.call(this);
  this.nome = nome;
  this.titolo = titolo;
};

Dipendente.prototype = Object.create(Persona.prototype);
Dipendente.prototype.constructor = Dipendente;

Dipendente.prototype.saluta = function() {
  if (this.saParlare) {
    console.log('Ciao mi chiamo ' + this.nome + ' e lavoro come ' + this.titolo);
  }
};

var Cliente = function(nome) {
  Persona.call(this);
  this.nome = nome;
};

Cliente.prototype = Object.create(Persona.prototype);
Cliente.prototype.constructor = Cliente;

var Mimo = function(nome) {
  Persona.call(this);
  this.nome = nome;
  this.saParlare = false;
};

Mimo.prototype = Object.create(Persona.prototype);
Mimo.prototype.constructor = Mimo;

var bob = new Dipendente('Bob', 'Architetto');
var joe = new Cliente('Joe');
var rg = new Dipendente('Red Green', 'Tuttofare');
var mike = new Cliente('Mike');
var mime = new Mimo('Mimo');
bob.saluta();
joe.saluta();
rg.saluta();
mike.saluta();
mime.saluta();

Stamperà:

Ciao, mi chiamo Bob e lavoro come Architetto
Ciao, mi chiamo Joe
Ciao, mi chiamo Red Green, e lavoro come Tuttofare
Ciao, mi chiamo Mike

Specifiche

Specifica Stato Commenti
ECMAScript 1st Edition. Implemented in JavaScript 1.0. Standard Definizione iniziale.
ECMAScript 5.1 (ECMA-262)
The definition of 'Object.prototype' in that specification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Object.prototype' in that specification.
Standard  

Compatibilità con i browser

Funzionalità Chrome Firefox (Gecko) Internet Explorer Opera Safari
Supporto di base (Yes) (Yes) (Yes) (Yes) (Yes)
Funzionalità Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Supporto di base (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

See also

Tag del documento e collaboratori

 Hanno collaborato alla realizzazione di questa pagina: gamerboy, fantarama, tommyblue, roccomuso, vindega, nicolo-ribaudo
 Ultima modifica di: gamerboy,