buffer的slice()方法返回的新buffer和原buffer引用的是同一个对象!!!修改千万要注意!
2017-04-26 20:27
351 查看
//********注意*********** //slice()方法会返回一个新的buffer,但是新的bf2和源对象bf引用的是同一个!!!!也就是bf2的改变会改变bf var bf=new Buffer('panwen'); console.log(bf); //<Buffer 70 61 6e 77 65 6e> var bf2=bf.slice(1,4);//<Buffer 61 6e 77>---从下标1开始截取,截取到4,不包括4 console.log(bf2); bf2[0]=0; console.log(bf2); //<Buffer 00 6e 77> console.log(bf);//<Buffer 70 00 6e 77 65 6e> //********注意***********
要想实现深拷贝,用Buffer.copy(tembf);
var bf=new Buffer('panwen'); console.log(bf); //<Buffer 70 61 6e 77 65 6e> var bf3=new Buffer(10); //var bf3=bf.copy();不是这么写!,是下面的写法//**************实现深拷贝!!************* bf.copy(bf3);//这是拷贝到bf3中!,拷贝也可选位置,bf.copy(bf3,1,2,4)从第二位开始拷贝到3,1实质拷贝到buffer的第一位! console.log(bf3);//<Buffer 70 61 6e 77 65 6e 6f 72 00 00>后四位随机,不初始化 bf3[0]=0; console.log(bf3);//<Buffer 00 61 6e 77 65 6e 6f 72 00 00> console.log(bf); //<Buffer 70 61 6e 77 65 6e>,不会改动原对象
相关文章推荐
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 不能编写返回引用可变对象的访问器方法
- 存储过程中使用RETURN语句返回数值,.Net里用ExecuteScalar方法结果将会导致一个未引用到具体对象的异常
- 4.3 不要编写返回引用可变对象的访问器方法
- 此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 不可编写返回可变引用对象的访问器方法
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- Effective C++ 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用
- Mybatis-generator修改源代码实现自定义方法,返回List对象(三)
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 阿里巴巴 Java 开发手册:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- Get方法中不要返回可变对象的引用 【Java2核心技术第一卷 读书笔记】
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 不要编写返回引用可变对象的访问器方法