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()
. 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
- Especifica la funció que ha creat el prototipus de l'objecte.
Object.prototype.__proto__
- 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__()
- Associa una funció a una propietat que, quan s'accedeix, executa aquesta funció i retorna el seu valor.
Object.prototype.__defineSetter__()
- Associa una funció a una propietat que, quan s'assigna, executa aquesta funció que modifica la propietat.
Object.prototype.__lookupGetter__()
- Retorna una funció associada a la propietat especificada pel mètode
__defineGetter__
. Object.prototype.__lookupSetter__()
- Retorna a funció associada a la propietat especificada pel mètode
__defineSetter__
. Object.prototype.hasOwnProperty()
- 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()
- 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()
- Retorna un booleà que indica si està activat l'atribut intern DontEnum de l'ECMAScript.
Object.prototype.toSource()
- 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()
- Crida el mètode
toString()
. Object.prototype.toString()
- 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()
- 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) |