//通過長度構建的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());
