Diese Übersetzung ist unvollständig. Bitte helfen Sie uns, diesen Artikel aus dem Englischen zu übersetzen
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(). Ä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__- 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__()- Verknüpft eine Funktion mit einem Attribut, das, wenn dieses gesetzt werden soll, eine Funktion ausführt, die das Attribut modifiziert.
Object.prototype.__lookupGetter__()- Gibt die Funktion zurück, die mit dem spezifizierten Attribut über die Methode
__defineGetter__()verknüpft ist. Object.prototype.__lookupSetter__()- Gibt die Funktion zurück, die mit dem spezifizierten Attribut über die Methode
__defineSetter__()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()- 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()- 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()- Ruft
toString()auf. Object.prototype.toString()- 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 Latest Draft (ECMA-262) Die Definition von 'Object.prototype' in dieser Spezifikation. |
Entwurf |
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) |