aboutsummaryrefslogtreecommitdiff
path: root/files/de/web/javascript/reference/global_objects/object/valueof/index.html
blob: 1b3d56175699aa3cb6a6587f406e72ad8bc749ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
---
title: Object.prototype.valueOf()
slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf
tags:
  - JavaScript
  - Method
  - Object
  - Prototype
translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf
---
<div>{{JSRef}}</div>

<p>Die <code><strong>valueOf()</strong></code> Methode liefert den primitiven Wert des spezifizierten Objekts zurück.</p>

<div>{{EmbedInteractiveExample("pages/js/object-prototype-valueof.html")}}</div>

<p class="hidden">Der source code für dieses interaktive Beispiel ist in einem GitHub repository verfügbar. Wenn Sie sich an dem Projekt für interaktive Beispiele beteiligen möchten, dann rufen Sie bitte eine Kopie des Repositories via git clone ab: <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> und senden uns einen pull request.</p>

<h2 id="Syntax">Syntax</h2>

<pre class="syntaxbox"><code><var>object</var>.valueOf()</code></pre>

<h3 id="Rückgabewert">Rückgabewert</h3>

<p>Der primitive Wert des spezifizierten Objekts.</p>

<h2 id="Beschreibung">Beschreibung</h2>

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

<p>Standardmäßig erbt jedes Objekt die <code>valueOf</code> Methode von {{jsxref("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 <code>valueOf</code> das Objekt selbst zurück.</p>

<p>Die Methode <code>valueOf</code> 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 <code>Object.prototype.valueOf()</code> entsprechend überschrieben werden, anstelle der standardmäßig durch {{jsxref("Object")}} bereitgestellten Methode.</p>

<h3 id="Überschreiben_von_valueOf_für_eigene_Objekttypen">Überschreiben von <code>valueOf</code> für eigene Objekttypen</h3>

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

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

<pre class="brush: js">MyNumberType.prototype.valueOf = function() { return customPrimitiveValue; };</pre>

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

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

<pre class="brush: js">myNumberType.valueOf()</pre>

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

<h2 id="Beispiele">Beispiele</h2>

<h3 id="Verwendung_von_valueOf">Verwendung von <code>valueOf</code></h3>

<pre class="brush: js">function MyNumberType(n) {
    this.number = n;
}

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

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

<h2 id="Spezifikationen">Spezifikationen</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Spezifikation</th>
   <th scope="col">Status</th>
   <th scope="col">Hinweise</th>
  </tr>
  <tr>
   <td>{{SpecName('ES1')}}</td>
   <td>{{Spec2('ES1')}}</td>
   <td>Initial definition. Implemented in JavaScript 1.1.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES5.1', '#sec-15.2.4.4', 'Object.prototype.valueOf')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_Kompatibilität">Browser Kompatibilität</h2>

<div>


<p>{{Compat("javascript.builtins.Object.valueOf")}}</p>
</div>

<h2 id="Siehe_auch">Siehe auch</h2>

<ul>
 <li>{{jsxref("Object.prototype.toString()")}}</li>
 <li>{{jsxref("parseInt", "parseInt()")}}</li>
 <li>{{jsxref("Symbol.toPrimitive")}}</li>
</ul>