| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.
Die valueOf()-Methode von Object Instanzen konvertiert den this Wert zu einem Objekt. Diese Methode soll von abgeleiteten Objekten fr benutzerdefinierte Typumwandlungslogik berschrieben werden.
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function () {
return this.number;
};
const object = new MyNumberType(4);
console.log(object + 3);
// Expected output: 7
valueOf()
Keine.
Der this Wert, konvertiert zu einem Objekt.
Hinweis:
Damit valueOf whrend der Typumwandlung ntzlich ist, muss es einen primitiven Wert zurckgeben. Da alle primitiven Typen ihre eigenen valueOf()-Methoden haben, ruft das Aufrufen von primitiveValue.valueOf() im Allgemeinen nicht Object.prototype.valueOf() auf.
JavaScript ruft die valueOf-Methode auf, um ein Objekt in einen primitiven Wert zu konvertieren. Sie mssen die valueOf-Methode selten selbst aufrufen; JavaScript ruft sie automatisch auf, wenn es auf ein Objekt stt, wo ein primitiver Wert erwartet wird.
Diese Methode wird vorrangig von numerischer Konvertierung und primitiver Konvertierung aufgerufen, aber String-Konvertierung ruft priorisiert toString() auf, und toString() wird sehr wahrscheinlich einen String-Wert zurckgeben (selbst fr die Object.prototype.toString() Basisimplementierung), so dass valueOf() in diesem Fall normalerweise nicht aufgerufen wird.
Alle Objekte, die von Object.prototype erben (das heit, alle auer null-Prototyp Objekten), erben die toString()-Methode. Die Object.prototype.valueOf()-Basisimplementierung ist absichtlich nutzlos: Indem sie ein Objekt zurckgibt, wird ihr Rckgabewert niemals von einem Primitive Conversion Algorithmus verwendet. Viele eingebaute Objekte berschreiben diese Methode, um einen geeigneten primitiven Wert zurckzugeben. Wenn Sie ein benutzerdefiniertes Objekt erstellen, knnen Sie valueOf() berschreiben, um eine benutzerdefinierte Methode aufzurufen, damit Ihr benutzerdefiniertes Objekt in einen primitiven Wert umgewandelt werden kann. Im Allgemeinen wird valueOf() verwendet, um einen Wert zurckzugeben, der fr das Objekt am bedeutungsvollsten ist im Gegensatz zu toString(), muss es kein String sein. Alternativ knnen Sie eine [Symbol.toPrimitive]() Methode hinzufgen, die noch mehr Kontrolle ber den Konvertierungsprozess erlaubt und immer gegenber valueOf oder toString fr jede Art von Typumwandlung bevorzugt wird.
Die Basis-valueOf()-Methode gibt den this-Wert selbst zurck, konvertiert in ein Objekt, falls es nicht bereits eins ist. Daher wird ihr Rckgabewert niemals von einem primitiven Konvertierungsalgorithmus verwendet.
const obj = { foo: 1 };
console.log(obj.valueOf() === obj); // true
console.log(Object.prototype.valueOf.call("primitive"));
// [String: 'primitive'] (a wrapper object)
Sie knnen eine Funktion erstellen, die anstelle der Standard-valueOf-Methode aufgerufen wird. Ihre Funktion sollte keine Argumente annehmen, da sie bei der Typumwandlung keine erhalten wird.
Zum Beispiel knnen Sie eine valueOf-Methode zu Ihrer benutzerdefinierten Klasse Box hinzufgen.
class Box {
#value;
constructor(value) {
this.#value = value;
}
valueOf() {
return this.#value;
}
}
Mit dem vorherigen Code wird jedes Mal, wenn ein Objekt vom Typ Box in einem Kontext verwendet wird, in dem es als primitiver Wert (aber nicht speziell als String) dargestellt werden soll, die im vorherigen Code definierte Funktion automatisch von JavaScript aufgerufen.
const box = new Box(123);
console.log(box + 456); // 579
console.log(box == 123); // true
Die valueOf-Methode eines Objekts wird normalerweise von JavaScript aufgerufen, aber Sie knnen sie selbst wie folgt aufrufen:
box.valueOf();
Einseitiges Plus fhrt Zahlenumwandlung auf seinem Operanden durch, was bei den meisten Objekten ohne [Symbol.toPrimitive]() bedeutet, dass dessen valueOf() aufgerufen wird. Wenn jedoch das Objekt keine benutzerdefinierte valueOf()-Methode hat, wird es von der Basisimplementierung ignoriert und stattdessen der Rckgabewert von toString() verwendet.
+new Date(); // the current timestamp; same as new Date().getTime()
+{}; // NaN (toString() returns "[object Object]")
+[]; // 0 (toString() returns an empty string list)
+[1]; // 1 (toString() returns "1")
+[1, 2]; // NaN (toString() returns "1,2")
+new Set([1]); // NaN (toString() returns "[object Set]")
+{ valueOf: () => 42 }; // 42
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-object.prototype.valueof |
Objectassign()create()defineProperties()defineProperty()entries()freeze()fromEntries()getOwnPropertyDescriptor()getOwnPropertyDescriptors()getOwnPropertyNames()getOwnPropertySymbols()getPrototypeOf()groupBy()hasOwn()is()isExtensible()isFrozen()isSealed()keys()preventExtensions()seal()setPrototypeOf()values()Object/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |