Deskripsi metode:
Mengembalikan objek buffer baru, dan buffer baru dan buffer lama berbagi memori.
Tetapi dikurangi oleh Offset Indeks Mulai dan Akhir. (Misalnya, jika ada 1 hingga 10 byte dalam buffer, kami hanya ingin 4-8 byte, sehingga kami dapat menggunakan fungsi ini buf.slice (4,8), karena mereka berbagi satu memori, sehingga mereka tidak akan mengkonsumsi memori.)
Karena memori dibagikan, setelah memodifikasi buffer baru, konten buffer lama juga akan dimodifikasi.
tata bahasa:
Salinan kode adalah sebagai berikut:
buffer.slice ([start], [end])
Menerima parameter:
Mulai Posisi Mulai, Default
Posisi ujung ujung, default ke panjang buffer
contoh:
Buat buffer menggunakan alfabet ASCII, gunakan fungsi SLICE, dan kemudian memodifikasi byte dalam buffer asli.
Salinan kode adalah sebagai berikut:
var buf1 = buffer baru (26);
untuk (var i = 0; i <26; i ++) {
buf1 [i] = i + 97; // 97 adalah 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
Kode Sumber:
Salinan kode adalah sebagai berikut:
// TODO (Trevnorris): Saat ini berfungsi seperti array.prototype.slice (), yang mana
// Tidak mengikuti standar baru untuk melempar indeks di luar jangkauan.
Buffer.prototype.slice = function (start, end) {
var len = this.length;
mulai = ~~ mulai;
end = util.isundefined (end)? Len: ~~ Akhir;
if (mulai <0) {
Mulai += len;
if (mulai <0)
mulai = 0;
} lain jika (mulai> len) {
mulai = len;
}
if (end <0) {
end += len;
if (end <0)
akhir = 0;
} lain jika (end> len) {
end = len;
}
if (end <start)
akhir = mulai;
var buf = new NativeBuffer ();
Sliceonto (ini, buf, start, end);
buf.length = end - start;
if (buf.length> 0)
buf.parent = util.isundefined (this.parent)? ini: ini. Parent;
return buf;
};