Javascript分配中的左手边无效

在尝试向nodejs的Buffer类添加队列typesfunction时,我构build了以下函数:

Buffer.prototype.popleft = function(n) { tRet = this.slice(0,n); this = this.slice(n,this.length-1); // error here return tRet; }; 

但是,此代码会产生以下错误:“ReferenceError:在赋值中无效的左侧”

我知道这个问题是在函数内部赋值“this”,我不知道是完成这种相同types逻辑的更好方法。

编辑:

结束在缓冲区周围写一个对象,如下所示:

 sPort.vBuffer = {} sPort.vBuffer.buff = new Buffer(0); sPort.vBuffer.off = 0; sPort.vBuffer.expect = -1; sPort.vBuffer.ReadChr = function() { this.off ++; return this.buff[this.off - 1]; }; sPort.vBuffer.ReadUInt32LE = function() { this.off += 4; return this.buff.readUInt32LE(this.off - 4); } sPort.vBuffer.ReadInt32LE = function() { this.off += 4; return this.buff.readInt32LE(this.off - 4); } sPort.vBuffer.Write = function(aData) { this.buff = Buffer.concat([this.buff.slice(this.off),aData]) this.off = 0; }; 

你不能分配给this 。 你可以指定一个副本,但在你的情况下,它看起来不会有什么好处。

根据Node文档,Buffer实例不能resize。 现在,不pipe是因为Node没有提供这样的API,还是因为一些内部实现的假设/依赖,我不知道。 有没有看起来像改变一个缓冲区实例的长度的任何方式。

您可以使用.copy来移动内容,然后用一些虚拟值填充最后的位置(我猜可以是nullundefined )。