Penerangan kaedah:
Mengembalikan objek penimbal baharu ini berkongsi memori yang sama seperti penimbal lama.
Tetapi dikurangkan dengan mengimbangi indeks permulaan dan akhir. (Sebagai contoh, jika terdapat 1 hingga 10 bait dalam penimbal, dan kami hanya mahu 4-8 bait, kami boleh menggunakan fungsi ini buf.slice(4,8). Kerana mereka berkongsi memori yang sama, mereka tidak akan menggunakan memori .,)
Oleh kerana memori dikongsi, selepas mengubah suai penimbal baru, kandungan penimbal lama juga akan diubah suai.
Tatabahasa:
buffer.slice([mula], [akhir])
Terima parameter:
mulakan Kedudukan permulaan, lalai
akhir Kedudukan tamat, lalai ialah panjang penimbal
Contoh:
Buat penimbal menggunakan abjad ASCII, gunakan fungsi hirisan dan kemudian ubah suai bait dalam penimbal asal.
var buf1 = Penampan baharu(26);
untuk (var i = 0 ; i < 26 ; i ) {
buf1[i] = i 97; // 97 ialah 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
Kod sumber:
// TODO(trevnorris): pada masa ini berfungsi seperti Array.prototype.slice(), yang
// tidak mengikut piawaian baharu untuk melontar indeks di luar julat.
Buffer.prototype.slice = fungsi(mula, tamat) {
var len = this.length;
mula = ~~mula;
end = util.isUndefined(end) ? len : ~~end;
jika (mula < 0) {
Mula = len;
Jika (mula < 0)
Mula = 0;
} lain jika (mula > len) {
Mula = len;
}
jika (akhir < 0) {
Tamat = len;
Jika (akhir < 0)
Tamat = 0;
} lain jika (akhir > len) {
Tamat = len;
}
jika (akhir < mula)
Tamat = mula;
var buf = new NativeBuffer();
sliceOnto(ini, buf, mula, tamat);
buf.length = tamat - mula;
jika (buf.length > 0)
buf.parent = util.isUndefined(this.parent) ? ini : this.parent;
Kembalikan buf;
};