Object.prototype
La propietat Object.prototype
representa el prototipus per a Object
.
Property attributes of Object.prototype |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Descripció
A JavaScript, tots els objectes hereten de Object
; tots els objectes hereten els mètodes i propietats de Object.prototype
, tot i que es poden sobreescriure (excepte un Object
amb prototipus null
, és a dir, Object.create(null)
). Per exemple, altres prototipus de constructors sobreescriuen la propietat constructor
i ofereixen els seus propis mètodes toString()
(en-US). Els canvis al prototipus Object
es propaguen a tots els objectes a no ser que les propietats i mètodes que reben aquests canvis hagin sigut sobreescrites més avall a la cadena de prototipus.
Propietats
Object.prototype.constructor
(en-US)- Especifica la funció que ha creat el prototipus de l'objecte.
Object.prototype.__proto__
(en-US)- Referencia l'objecte utilitzat com a prototipus quan aquest objecte va ser instanciat.
Object.prototype.__noSuchMethod__
- Permet definir una funció que serà executada quan es cridi com mètode un membre no definit.
Object.prototype.__count__
Retornava el nombre de propietats enumerables que hi hagués a un objecte definit per l'usuari. S'ha eliminat.Object.prototype.__parent__
Referenciava el context d'un objecte. S'ha eliminat.
Mètodes
Object.prototype.__defineGetter__()
(en-US)- Associa una funció a una propietat que, quan s'accedeix, executa aquesta funció i retorna el seu valor.
Object.prototype.__defineSetter__()
(en-US)- Associa una funció a una propietat que, quan s'assigna, executa aquesta funció que modifica la propietat.
Object.prototype.__lookupGetter__()
(en-US)- Retorna una funció associada a la propietat especificada pel mètode
__defineGetter__
(en-US). Object.prototype.__lookupSetter__()
(en-US)- Retorna a funció associada a la propietat especificada pel mètode
__defineSetter__
(en-US). Object.prototype.hasOwnProperty()
(en-US)- Retorna un booleà que indica si l'objecte conté la propietat especificada com una propietat pròpia d'ell mateix en comptes d'heretar-la a través de la cadena de prototipus.
Object.prototype.isPrototypeOf()
(en-US)- Retorna un booleà que indica si l'objecte espeicfifcat pertany a la cadena de prototipus de l'objecte sobre el que es crida aquest mètode.
Object.prototype.propertyIsEnumerable()
(en-US)- Retorna un booleà que indica si està activat l'atribut intern DontEnum de l'ECMAScript.
Object.prototype.toSource()
(en-US)- Retorna un string que conté cofi font que defineix un literal d'objecte que representa l'objecte sobre el que s'executa aquest mètode; aquest valor pot utilitzar-se per a crear un nou objecte.
Object.prototype.toLocaleString()
(en-US)- Crida el mètode
toString()
(en-US). Object.prototype.toString()
(en-US)- Retorna una representació d'aquest objecte en forma de string.
Object.prototype.unwatch()
- Esborra un watchpoint d'una propietat de l'objecte.
Object.prototype.valueOf()
(en-US)- Retorna el valor primitiu de l'objecte especificat.
Object.prototype.watch()
- Afegeix un watchpoint a una propietat de l'objecte.
Object.prototype.eval()
Evaluava un string de codi font JavaScript dins el context de l'objecte especificat. S'ha eliminat.
Exemples
Degut a que JavaScript no res semblant a subclasses d'objectes, la propietat prototype
és una bona forma d'utilitzar algunes funcions que fan d'objectes com a "classe base". Per exemple:
var Person = function() {
this.canTalk = true;
};
Person.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name);
}
};
var Employee = function(name, title) {
Person.call(this);
this.name = name;
this.title = title;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;
Employee.prototype.greet = function() {
if (this.canTalk) {
console.log('Hi, I am ' + this.name + ', the ' + this.title);
}
};
var Customer = function(name) {
Person.call(this);
this.name = name;
};
Customer.prototype = Object.create(Person.prototype);
Customer.prototype.constructor = Customer;
var Mime = function(name) {
Person.call(this);
this.name = name;
this.canTalk = false;
};
Mime.prototype = Object.create(Person.prototype);
Mime.prototype.constructor = Mime;
var bob = new Employee('Bob', 'Builder');
var joe = new Customer('Joe');
var rg = new Employee('Red Green', 'Handyman');
var mike = new Customer('Mike');
var mime = new Mime('Mime');
bob.greet();
// Hi, I am Bob, the Builder
joe.greet();
// Hi, I am Joe
rg.greet();
// Hi, I am Red Green, the Handyman
mike.greet();
// Hi, I am Mike
mime.greet();
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Definició inicial. Implementat a JavaScript 1.0. |
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 |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |