Object.prototype
Das Object.prototype
Attribut repräsentiert das Prototype Objekt von Object
.
Eigenschaftsattribute von Object.prototype |
|
---|---|
Schreibbar | nein |
Aufzählbar | nein |
Konfigurierbar | nein |
Beschreibung
Alle Objekte in JavaScript stammen von Object
; alle Objekte erben Methoden und Attribute von Object.prototype
, wobei diese überschrieben werden können (mit Ausnahme von Objekten mit einem null-
Prototyp, sprich Object.create(null)
). Die Prototypen anderer Konstruktoren zum Beispiel, überschreiben das constructor
Attribut und stellen ihre eigenen Methoden zur Verfügung toString()
(en-US). Änderungen am Object
prototype Objekt werden an alle Objekte weitergeleitet, solange die betroffenen Attribute und Methoden nicht zuvor in der Kette der Prototypen überschrieben wurden.
Attribute
Object.prototype.constructor
- Die Funktion, die den Prototypen eines Objekts erstellt.
Object.prototype.__proto__
(en-US)- Zeigt auf das Objekt, das als bei der Initialisierung des Objektes als Prototyp diente.
Object.prototype.__noSuchMethod__
- Erlaubt das Erstellen einer Funktion, die dann ausgeführt wird, wenn ein undefiniertes Objekt als Methode aufgerufen wird.
Object.prototype.__count__
Wurde benutzt um die Anzahl der aufzählbaren Attribute direkt durch das Objekt zurückzugeben; mittlerweile entfernt.Object.prototype.__parent__
Wurde benutzt um auf den Kontext eines Objektes zu verweisen; mittlerweile entfernt.
Methoden
Object.prototype.__defineGetter__()
- Verknüpft eine Funktion mit einem Attribut, das, wenn darauf zugegriffen wird eine Funktion ausführt und deren Rückgabewert zurück gibt.
Object.prototype.__defineSetter__()
(en-US)- Verknüpft eine Funktion mit einem Attribut, das, wenn dieses gesetzt werden soll, eine Funktion ausführt, die das Attribut modifiziert.
Object.prototype.__lookupGetter__()
(en-US)- Gibt die Funktion zurück, die mit dem spezifizierten Attribut über die Methode
__defineGetter__()
verknüpft ist. Object.prototype.__lookupSetter__()
(en-US)- Gibt die Funktion zurück, die mit dem spezifizierten Attribut über die Methode
__defineSetter__()
(en-US) verknüpft ist. Object.prototype.hasOwnProperty()
- Gibt einen Boolean Wert zurück, der anzeigt, ob ein Attribut ein direktes Attribut dieses Objekts ist, oder über Vererbung durch einen Prototypen hinzugefügt wurde.
Object.prototype.isPrototypeOf()
(en-US)- Gibt einen Boolean Wert zurück, der anzeigt, ob das spezifizierte Objekt in der Prototyp-Kette des Objekts, das diese Funktion aufruft, enthalten ist.
Object.prototype.propertyIsEnumerable()
(en-US)- Gibt einen Boolean Wert zurück, der anzeigt, ob das interne ECMAScript [[Enumerable]] attribute gesetzt ist.
Object.prototype.toSource()
- Liefert einen String zurück, der die Quelle eines Objekt-Literals enthält, und das Objekt darstellt, das diese Funktion aufruft; man kann diesen Wert benutzen, um ein neues Objekt zu erstellen.
Object.prototype.toLocaleString()
(en-US)- Ruft
toString()
(en-US) auf. Object.prototype.toString()
(en-US)- Gibt eine String-Darstellung des Objekts zurück.
Object.prototype.unwatch()
- Entfernt einen Kontrollpunkt von einem Attribut des Objekts.
Object.prototype.valueOf()
- Gibt den primitiven Wert des spezifizierten Objekts zurück.
Object.prototype.watch()
- Fügt einem Attribut des Objekts einen Kontrollpunkt hinzu.
Object.prototype.eval()
- Wurde genutzt, um einen String bestehend aus JavaScript Code, im Kontext des aktuellen Objekts auszuwerten; wurde entfernt;
Beispiele
Weil JavaScript keine klassischen Sub-Klassen-Funktionalität hat, sind Prototypen ein guter Weg, um "Base Class" Objekte mit bestimmten Funktionen zu erstellen, die als Objekte fungieren. Zum Beispiel:
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();
Spezifikationen
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. Implemented in JavaScript 1.0. |
ECMAScript 5.1 (ECMA-262) Die Definition von 'Object.prototype' in dieser Spezifikation. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Object.prototype' in dieser Spezifikation. |
Standard | |
ECMAScript (ECMA-262) Die Definition von 'Object.prototype' in dieser Spezifikation. |
Lebender Standard |
Browser Kompatibilität
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |