Methodenbeschreibung:
Gibt ein neues Pufferobjekt zurück. Dieser neue Puffer teilt sich den gleichen Speicher wie der alte Puffer.
Aber reduziert um Start- und Endindex-Offsets. (Wenn sich beispielsweise 1 bis 10 Bytes in einem Puffer befinden und wir nur 4 bis 8 Bytes benötigen, können wir diese Funktion buf.slice(4,8) verwenden. Da sie denselben Speicher gemeinsam nutzen, verbrauchen sie keinen Speicher . ,)
Da der Speicher gemeinsam genutzt wird, wird nach der Änderung des neuen Puffers auch der Inhalt des alten Puffers geändert.
Grammatik:
buffer.slice([Start], [Ende])
Empfangsparameter:
Start Startposition, Standard
end Endposition, Standard ist Pufferlänge
Beispiel:
Erstellen Sie einen Puffer mit dem ASCII-Alphabet, verwenden Sie die Slice-Funktion und ändern Sie dann ein Byte im ursprünglichen Puffer.
var buf1 = neuer Puffer(26);
für (var i = 0 ; i < 26 ; i ) {
buf1[i] = i 97; // 97 ist ASCII a
}
var buf2 = buf1.slice(0, 3);
console.log(buf2.toString('ascii', 0, buf2.length));
buf1[0] = 33;
console.log(buf2.toString('ascii', 0, buf2.length));
// abc
// !bc
Quellcode:
// TODO(trevnorris): funktioniert derzeit wie Array.prototype.slice(), das
// folgt nicht dem neuen Standard für das Auslösen von Indizes außerhalb des Bereichs.
Buffer.prototype.slice = function(start, end) {
var len = this.length;
start = ~~start;
end = util.isUndefined(end) ? len : ~~end;
if (start < 0) {
Start = len;
Wenn (Start < 0)
Start = 0;
} else if (start > len) {
Start = len;
}
if (end < 0) {
Ende = len;
Wenn (Ende < 0)
Ende = 0;
} else if (end > len) {
Ende = len;
}
if (end < start)
Ende = Anfang;
var buf = new NativeBuffer();
SliceOnto(this, buf, start, end);
buf.length = end - start;
if (buf.length > 0)
buf.parent = util.isUndefined(this.parent) ? this : this.parent;
Rückgabe buf;
};