//通过长度构建的buffer内容是随机的 var buffer=new Buffer(100); console.log(buffer); //手动清空buffer,一般创建buffer不会清空 buffer.fill(0); //通过字符串创建buffer //字符串具有不变性 var str="阿尼"; var buffer=new Buffer(str); console.log(buffer) // 通过数据创建 ,一般这种方式用的较少 var buffer=new Buffer([0,255]); console.log(buffer); //代表的是内存,引用 //数组的slice是浅拷贝 let ary=[1,2,3]; let ary1=[ary,100,200]; let newAry=ary1.slice(); ary[0]=500; console.log(newAry); // 深拷贝 ,指的是对象中里面存的对象和以前的对象毫无关系,但长的一样 var obj={a:1}; console.log([obj]===[{a:1}]) // 浅拷贝 ,里面存放的内容和以前的是同一个地址 var obj={a:1}; console.log([obj]===[obj]) var ee=Object.assign({w:1},{a:{a:1}}) //浅拷贝 将两个对象合成一个新的对象 console.log(ee); //JSON.parse(JSON.stringify({a:{a:1}})); //深拷贝 //buffer存放的都是内存地址,所有slice不会返回一个新的buffer var buffer=new Buffer([1,2,3]); var newBuffer=buffer.slice(0,1); newAry[0]=100; console.log(buffer); // var buf1=new Buffer('音乐'); var buf2=new Buffer('啦啦'); var bigBuffer=new Buffer(12); //拷贝 buf1.copy(bigBuffer,0); buf2.copy(bigBuffer,buf1.length); console.log(bigBuffer.toString()) ;//可以调用toString方法转为字符 //buffer concat //合并两个buffer let ww=Buffer.concat([buf1,buf2]).toString(); console.log(ww); //合并两个buffer Buffer.myConcat=function (list,totaLength) { //totaLength 是否传递,如果传递用传递的长度构建一个buffer //如果没有长度。循环list算出总长度,构建一个大buffer //循环list将每一个小buffer拷贝到大buffer上 //如果长度过长,可以截取有效的长度,返回大buffer if(typeof totaLength=='undefined'){ totaLength=list.reduce((per,next)=>{ return per+next.length; },0); let buffer=new Buffer(totaLength); let index=0; list.forEach(item=>{ item.copy(buffer,index) index+=item.length; }); console.log(index); return buffer.slice(0,index); } } console.log(Buffer.myConcat([buf1,buf2]).toString());