Die valueOf() Methode liefert den primitiven Wert des spezifizierten Objekts zurück.

Syntax

object.valueOf()

Rückgabewert

Der primitive Wert des spezifizierten Objekts.

Beschreibung

JavaScript ruft die valueOf Methode auf, um das Objekt zu einem primitiven Wert zu konvertieren. Nur in seltenen Fällen ist es nötig, selbst die valueOf Methode aufzurufen; JavaScript tut dies automatisch dann, wenn es ein Objekt vorfindet und ein primitiver Wert erforderlich ist.

Standardmäßig erbt jedes Objekt die valueOf Methode von Object. Jedes built-in core object überschreibt zudem diese Methode, um jeweils den geeigneten Wert zu liefern. Falls ein Objekt keinen primitiven Wert haben sollte, liefert valueOf das Objekt selbst zurück.

Die Methode valueOf kann in eigenem Code verwendet werden, um etwa ein built-in object in seinen primitiven Wert zu wandeln. Bei der Implementierung eines eigenen Objekttyps sollte die Methode Object.prototype.valueOf() entsprechend überschrieben werden, anstelle der standardmäßig durch Object bereitgestellten Methode.

Überschreiben von valueOf für eigene Objekttypen

Es ist möglich eine function zu implementieren, welche anstelle der standardmäßig bereit gestellten valueOf Methode aufgerufen wird. Diese empfängt und benötigt keine Argumente.

Angenommen, in einem Projekt gibt es den Objekttyp MyNumberType und für diesen soll nun eine passende valueOf Methode implementiert werden. Der folgende Code zeigt wie mit einer function die valueOf Methode des Typs implementiert wird:

MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };

Mit Hilfe dieses Codes wird JavaScript automatisch diese Funktion aufrufen, sobald ein Objekt des Typs MyNumberType in einem Kontext steht, wo es als primitiver Wert benötigt wird.

Die Methode valueOf eines Objekts wird üblicherweise nur von JavaScript selbst aufgerufen, kann aber ebenso wie folgt jederzeit aufgerufen werden:

myNumberType.valueOf()

Wichtig: Objekte in String-Kontexten werden über die Methode toString() zu String umgewandelt, was etwas anderes ist als ein String Objekt welches über valueOf zum string primitive konvertiert wird. Alle Objekte haben eine Möglichkeit, zu einem String konvertiert zu werden, selbst wenn dies lediglich resultiert in "[object type]". Die meisten Objekte hingegen können nicht gewandelt werden zu number, boolean, oder function.

Beispiele

Verwendung von valueOf

function MyNumberType(n) {
    this.number = n;
}

MyNumberType.prototype.valueOf = function() {
    return this.number;
};

var myObj = new MyNumberType(4);
myObj + 3; // 7

Spezifikationen

Spezifikation Status Hinweise
ECMAScript 1st Edition (ECMA-262) Standard Initial definition. Implemented in JavaScript 1.1.
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Object.prototype.valueOf' in dieser Spezifikation.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Object.prototype.valueOf' in dieser Spezifikation.
Standard  
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Object.prototype.valueOf' in dieser Spezifikation.
Entwurf  

Browser Kompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidEdge MobileFirefox für AndroidOpera für AndroidSafari auf iOSSamsung InternetNode.js
Grundlegende UnterstützungChrome Vollständige Unterstützung JaEdge Vollständige Unterstützung JaFirefox Vollständige Unterstützung 1IE Vollständige Unterstützung JaOpera Vollständige Unterstützung JaSafari Vollständige Unterstützung JaWebView Android Vollständige Unterstützung JaChrome Android Vollständige Unterstützung JaEdge Mobile Vollständige Unterstützung JaFirefox Android Vollständige Unterstützung 4Opera Android Vollständige Unterstützung JaSafari iOS Vollständige Unterstützung JaSamsung Internet Android Vollständige Unterstützung Janodejs Vollständige Unterstützung Ja

Legende

Vollständige Unterstützung  
Vollständige Unterstützung

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
Mitwirkende an dieser Seite: paulkoegel, dennissterzenbach
Zuletzt aktualisiert von: paulkoegel,