ES6类和扩展内置的缓冲

问题描述:

我尝试的NodeJSES6类和扩展内置的缓冲

TypeError: Buffer2.from(...).slice2 is not a function 

延长缓冲区对象,但它看起来就像我从来无法与新类

overwite我怎样才能让Buffer2.from回报BUFFER2?

ES6类和extends关键字

反正没有更好的做一个完全新的类呢?

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)); 

缓冲导出为一个函数,而不是类,在这里你可以看到源代码buffer.js。所以,您尝试使用ES6类继承而不是es6类,但是要运行。如果你想扩展本地模块 - 使用原型继承。但是我的建议是当你尝试向native modiles添加一些功能时,使用继承的组合。