接收参数: start 开始位置,默认 end 结束位置,默认为buffer长度 例子: 用ASCII码字母表创建一个buffer,用一下slice函数,然后修改原buffer中的一个字节。 复制代码 代码如下: var buf1 = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf1[i] = i + 97; // 97 is 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
源码: 复制代码 代码如下: // TODO(trevnorris): currently works like Array.prototype.slice(), which // doesn"t follow the new standard for throwing on out of range indexes. Buffer.prototype.slice = function(start, end) { var len = this.length; start = ~~start; end = util.isUndefined(end) ? len : ~~end; if (start < 0) { start += len; if (start < 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(this, buf, start, end); buf.length = end - start; if (buf.length > 0) buf.parent = util.isUndefined(this.parent) ? this : this.parent; return buf; };