Object.prototype
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) |