--- title: Object.prototype slug: conflicting/Web/JavaScript/Reference/Global_Objects/Object translation_of: Web/JavaScript/Reference/Global_Objects/Object translation_of_original: Web/JavaScript/Reference/Global_Objects/Object/prototype original_slug: Web/JavaScript/Reference/Global_Objects/Object/prototype ---
{{JSRef("Global_Objects", "Object")}}

Sommario

La proprietà Object.prototype rappresenta l'oggetto prototipo di {{jsxref("Global_Objects/Object", "Object")}}.

{{js_property_attributes(0, 0, 0)}}

Descrizione

In JavaScript, tutti gli oggetti sono discendenti di {{jsxref("Global_Objects/Object", "Object")}}; tutti gli oggetti ereditano metodi e proprietà di Object.prototype (tranne nel caso l'oggetto abbia il prototipo uguale a {{jsxref("Global_Objects/null", "null")}}, quindi creati con il metodo {{jsxref("Object.create", "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 {{jsxref("Object.prototype.toString", "toString()")}}. I cambiamenti al prototipo di Object vengono estesi a tutti gli oggetti, eccetto quelli che sovrascrivono le proprietà e i metodi cambiati.

Proprietà

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

Metodi

{{jsxref("Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
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.
{{jsxref("Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
Associa una funzione a una proprietà di un oggetto. Quando si tenta di cambiare il valore di tale proprietà, viene eseguita la funzione.
{{jsxref("Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
Restituisce la funzione definita tramite {{jsxref("Object.prototype.defineGetter", "__defineGetter__()")}}.
{{jsxref("Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}
Restituisce la funzione definita tramite {{jsxref("Object.prototype.defineSetter", "__defineSetter__()")}}.
{{jsxref("Object.prototype.hasOwnProperty()")}}
Determina se l'oggetto contiene direttamente una proprietà (non ereditata tramite il prototipo).
{{jsxref("Object.prototype.isPrototypeOf()")}}
Determina se un oggetto fa parte della catena dei prototipi dell'oggetto sul quale è richiamato questo metodo.
{{jsxref("Object.prototype.propertyIsEnumerable()")}}
Determina se l'attributo DontEnum di ECMAScript interno è presente.
{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}
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.
{{jsxref("Object.prototype.toLocaleString()")}}
Richiama {{jsxref("Object.prototype.toString", "toString()")}}.
{{jsxref("Object.prototype.toString()")}}
Restituisce la rappresentazione dell'oggetto sotto forma di stringa.
{{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}
Termina di osservare i cambiamenti di una proprietà dell'oggetto.
{{jsxref("Object.prototype.valueOf()")}}
Ritorna il valore primitivo dell'oggetto.
{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}
Inizia a osservare i cambiamenti di una proprietà di un oggetto.
{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}
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.
{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}} {{Spec2('ES5.1')}}  
{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}} {{Spec2('ES6')}}  

Compatibilità con i browser

{{CompatibilityTable}}
Funzionalità Chrome Firefox (Gecko) Internet Explorer Opera Safari
Supporto di base {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
Funzionalità Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Supporto di base {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}

See also