--- 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 ---
La proprietà Object.prototype
rappresenta l'oggetto prototipo di {{jsxref("Global_Objects/Object", "Object")}}.
{{js_property_attributes(0, 0, 0)}}
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.
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
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')}} |
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}} |