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) |