我尝试在Nodejs中扩展Buffer Object
TypeError: Buffer2.from(...).slice2 is not a function
但看起来我永远不会用新课程覆盖
如何让Buffer2.from返回Buffer2?
ES6类和扩展关键字
无论如何更好的方式,而不是一个全新的课程?
class Buffer2 extends Buffer
{
constructor(obj, encoding)
{
console.log('Buffer2::constructor');
super(obj, encoding);
return this;
}
slice(start, end)
{
console.log('Buffer2::slice');
return this.slice(start, end)
}
slice2(start, length)
{
console.log('Buffer2::slice2');
return this.slice(start, start + length)
}
static from(obj, encoding)
{
console.log('Buffer2::from');
return new Buffer2(obj, encoding);
}
}
Buffer2.prototype.slice = function (start, end)
{
console.log('Buffer2::slice');
return this.slice(start, end)
}
Buffer2.prototype.slice2 = function (start, length)
{
return this.slice(start, start + length)
}
console.log(Buffer2, Buffer2.from('7E1D2C', 'hex').slice2(0, 1));
答案 0 :(得分:1)
缓冲区作为函数导出,而不是作为类导出,在这里您可以看到源代码buffer.js。所以,你尝试使用ES6类继承不是为了es6类,而是为了函数。如果要扩展本机模块 - 请使用原型继承。但是,当您尝试向本机模块添加一些功能时,我的建议是使用组合内容继承。