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
116
117
118
119
120
121
122
123
124
125
126
127
|
---
title: DataView
slug: Web/JavaScript/Reference/Global_Objects/DataView
tags:
- Constructor
- DataView
- JavaScript
- TypedArrays
translation_of: Web/JavaScript/Reference/Global_Objects/DataView
---
<div>{{JSRef}}</div>
<p>Die <strong><code>DataView</code></strong> Ansicht unterstützt eine Low-Level Schnittstelle für das Lesen und Schreiben von mehrere Zahlentypen in einem {{jsxref("ArrayBuffer")}}. Diese Ansicht ist unabhängig von den Plattform Byte-Reihenfolgen.</p>
<div>{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}</div>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox">new DataView(buffer [, byteOffset [, byteLength]])</pre>
<h3 id="Parameter">Parameter</h3>
<dl>
<dt><code>buffer</code></dt>
<dd>Ein existierender {{jsxref("ArrayBuffer")}} oder {{jsxref("SharedArrayBuffer")}} {{experimental_inline}}, welche als Speicher für das neue <code>DataView</code> Objekt dient.</dd>
<dt><code>byteOffset</code> {{optional_inline}}</dt>
<dd>Das Offset in Bytes, welches auf das erste Byte in dem spezifizierten Buffer für die neue Ansicht referenziert. Wenn dieser Parameter nicht angegeben ist, wird das erste Byte des Buffers als Startpunkt benutzt.</dd>
<dt><code>byteLength</code> {{optional_inline}}</dt>
<dd>Die Anzahl der Elemente in dem Byte Array. Wenn es nicht angegeben wird, wird die Länge des Buffers benutzt.</dd>
</dl>
<h3 id="Rückgabewert">Rückgabewert</h3>
<p>Ein neues <code>DataView</code> Objekt welches den spezifizierten Datenpuffer (Buffer) repräsentiert.</p>
<h3 id="Exceptions">Exceptions</h3>
<dl>
<dt><code>{{jsxref("RangeError")}}</code></dt>
<dd>Wird erzeugt, wenn <code>byteOffset</code> oder <code>byteLength</code> Größe als der Puffer (Buffers) sind</dd>
</dl>
<h2 id="Beschreibung">Beschreibung</h2>
<h3 id="Byte-Reihenfolge">Byte-Reihenfolge</h3>
<p>Zahlenformate mit mehreren Bytes werden im Speicher verschieden dargestellt, je nachdem welche Maschinenarchitektur genutzt wird (siehe {{Glossary("Endianness")}} für weitere Erklärungen). DataView bietet explizit die Kontrolle über den Zugriff auf die Zahlen unabhängig von der Plattformarchitektur-Byte-Reihenfolge.</p>
<pre class="brush: js">var littleEndian = (function() {
var buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
// Int16Array benutzt die Plattform Byte-Reihenfolge.
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true oder false
</pre>
<h2 id="Eigenschaften">Eigenschaften</h2>
<p>Alle <code>DataView</code> Instanzen erben von {{jsxref("DataView.prototype")}} und erlauben das Hinzufügen von Eigenschaften zu allen DataView Objekten</p>
<p>{{page('de/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Eigenschaften')}}</p>
<h2 id="Methoden">Methoden</h2>
<p>{{page('de/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methoden')}}</p>
<h2 id="Beispiele">Beispiele</h2>
<pre class="brush: js">var buffer = new ArrayBuffer(16);
var dv = new DataView(buffer, 0);
dv.setInt16(1, 42);
dv.getInt16(1); //42
</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">Kommentar</th>
</tr>
<tr>
<td>{{SpecName('Typed Array')}}</td>
<td>{{Spec2('Typed Array')}}</td>
<td>Abgelöst von ECMAScript 6</td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}}</td>
<td>{{Spec2('ES6')}}</td>
<td>Initiale Definition in einem ECMA Standard</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
<p>{{Compat("javascript.builtins.DataView")}}</p>
<h2 id="Bemerkungen_zur_Kompatibilität">Bemerkungen zur Kompatibilität</h2>
<p>Mit dem Start von Firefox 40 wird der {{jsxref("Operators/new", "new")}} Operator benötigt um eine <code>DataView</code> zu erstellen. Der Aufruf von <code>DataView()</code> als Funktion ohne <code>new</code> erzeugt jetzt einen {{jsxref("TypeError")}}.</p>
<pre class="brush: js example-bad">var dv = DataView(buffer, 0);
// TypeError: Das Aufrufen des DataView-Konstruktors ohne new ist verboten</pre>
<pre class="brush: js example-good">var dv = new DataView(buffer, 0);</pre>
<h2 id="Siehe_auch">Siehe auch</h2>
<ul>
<li><a class="link-https" href="https://github.com/jDataView/jDataView">jDataView</a>: JavaScript-Bibliothek welche Polyfills und Erweiterungen für die <code>DataView</code> API in allen Browdern und Node.js zur verfügung stellt.</li>
<li>{{jsxref("ArrayBuffer")}}</li>
<li>{{jsxref("SharedArrayBuffer")}}</li>
</ul>
|