From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- .../global_objects/arraybuffer/transfer/index.html | 84 ---------------------- 1 file changed, 84 deletions(-) delete mode 100644 files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html (limited to 'files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html') diff --git a/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html b/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html deleted file mode 100644 index 3004da98bf..0000000000 --- a/files/de/web/javascript/reference/global_objects/arraybuffer/transfer/index.html +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: ArrayBuffer.transfer() -slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transfer -tags: - - ArrayBuffer - - Experimental - - JavaScript - - Method - - Reference - - TypedArrays -translation_of: Archive/Web/JavaScript/ArrayBuffer.transfer ---- -
{{JSRef}} {{SeeCompatTable}}
- -

Die statische ArrayBuffer.transfer() Funktion gibt einen neuen ArrayBuffer mit dem Inhalt von oldBuffer. Je nachdem, wei die newByteLength gesetzt ist, werden die Daten abgeschnitten oder erweitert. Wenn newByteLength nicht gesetzt ist, wird die byteLength von oldBuffer benutzt. Diese Operation bringt oldBuffer in einen detached Status.

- -

Syntax

- -
ArrayBuffer.transfer(oldBuffer [, newByteLength]);
- -

Parameter

- -
-
oldBuffer
-
Ein {{jsxref("ArrayBuffer")}} Objekt von dem die Daten transferiert werden.
-
newByteLength
-
Die Bytelänge des neuen ArrayBuffer Objektes.
-
- -

Rückgabewert

- -

Ein neues ArrayBuffer Objekt.

- -

Beschreibung

- -

Die ArrayBuffer.transfer() Methode erlaubt es ein ArrayBuffer zu vergrößern und zu detachen. Die Möglichkeit ein ArrayBuffer zu vergrößern ohne es zu kopieren, hat den Vorteil, dass es viel schneller für große Buffer ist (ähnlich wie bei realloc). Die Möglichkeit, dass ein ArrayBuffer detachet wird, gibt dem Entwickler die explizite Kontrolle über das freigeben des internen Speichers. Dieses vermeidet das Entfernen aller Referenzen und das Warten auf die Garbage Collection.

- -

Beispiele

- -
var buf1 = new ArrayBuffer(40);
-new Int32Array(buf1)[0] = 42;
-
-var buf2 = ArrayBuffer.transfer(buf1, 80);
-buf1.byteLength; // 0 but if you use the polyfill then the value is still 40
-buf2.byteLength; // 80
-new Int32Array(buf2)[0]; // 42
-
-var buf3 = ArrayBuffer.transfer(buf2, 0);
-buf2.byteLength; // 0 but if you use the polyfill then the value is still 80
-buf3.byteLength; // 0
-
- -

Polyfill

- -

Für Browser, die die Funktion nicht nativ unterstützen, gibt es die Möglichkeit folgenden Quelltext am Anfang eines Skriptes einzufügen, um die Funktion transfer() zu benutzen. Diese Funktion ist nicht exakt die in der API beschriebene, weil Browser, die die Funktion unterstützen, direkten Zugriff auf die C++ Funktion realloc() haben, welche die Länge des Speichers erhöht und nur eine Kopie anlegt, wenn es nötig ist. Im Gegensatz dazu kopiert der folgende Pollyfill alles immer in neuen Speicher. Diese Funktion transferiert die Daten jedoch von einem ArrayBuffer zu einem anderen.

- -
if (!ArrayBuffer.transfer) {
-    ArrayBuffer.transfer = function(source, length) {
-        if (!(source instanceof ArrayBuffer))
-            throw new TypeError('Source must be an instance of ArrayBuffer');
-        if (length <= source.byteLength)
-            return source.slice(0, length);
-        var sourceView = new Uint8Array(source),
-            destView = new Uint8Array(new ArrayBuffer(length));
-        destView.set(sourceView);
-        return dest.buffer;
-    };
-}
- -

Spezifikationen

- -

Ist in keiner aktuellen Spezifikation enthalten, wird aber in der Zukunft für ECMA-262 geplant.

- -

Browserkompatibilität

- - - -

{{Compat("javascript.builtins.ArrayBuffer.transfer")}}

- -

Siehe auch

- - -- cgit v1.2.3-54-g00ecf