Description de la méthode:
Renvoie un nouvel objet tampon, et le nouveau tampon et l'ancien tampon partagent une mémoire.
Mais il est réduit par le décalage de début et d'indice de fin. (Par exemple, s'il y a 1 à 10 octets dans un tampon, nous ne voulons que 4 à 8 octets, nous pouvons donc utiliser cette fonction buf.slice (4,8), car ils partagent une mémoire, afin qu'ils ne consomment pas de mémoire.)
Parce que la mémoire est partagée, après avoir modifié le nouveau tampon, le contenu de l'ancien tampon sera également modifié.
grammaire:
La copie de code est la suivante:
buffer.slice ([start], [fin])
Recevoir des paramètres:
Position de démarrage de démarrage, par défaut
Position finale de fin, par défaut à la longueur du tampon
exemple:
Créez un tampon à l'aide de l'alphabet ASCII, utilisez la fonction de tranche, puis modifiez un octet dans le tampon d'origine.
La copie de code est la suivante:
var buf1 = nouveau tampon (26);
pour (var i = 0; i <26; i ++) {
buf1 [i] = i + 97; // 97 est 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
Code source:
La copie de code est la suivante:
// TODO (Trevnorris): fonctionne actuellement comme array.prototype.slice (), qui
// ne suit pas la nouvelle norme pour jeter les index hors de portée.
Buffer.prototype.slice = fonction (start, end) {
var len = this.length;
start = ~~ start;
end = util.isundefined (end)? Len: ~~ end;
if (start <0) {
start + = len;
if (démarrer <0)
start = 0;
} else if (start> len) {
start = len;
}
if (end <0) {
end + = len;
if (end <0)
end = 0;
} else if (end> len) {
end = len;
}
if (end <start)
end = start;
var buf = new nativeBuffer ();
Sliceonto (ceci, buf, start, fin);
buf.length = end - start;
if (buf.length> 0)
buf.parent = util.isundefined (this.parent)? Ceci: ce.parent;
retour Buf;
};