gpt4 book ai didi

node.js - 创建 NodeJS Buffer 的子类

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:25 24 4
gpt4 key购买 nike

我正在尝试创建 NodeJS 缓冲区的子类。我尝试了以下方法:

const SubClass = Object.create(Buffer)
SubClass.prototype.isZero = function () {
for(const value of this.buffer) { // Fails on this line
...
}
}

然后我执行以下操作

SubClass.from([0, 0]).isZero()

它抛出

TypeError: undefined is not a function

但是 this.buffer 已定义。那么问题是什么(也许是迭代器问题?)?我在扩展缓冲区方面做错了什么吗?

最佳答案

Buffer 不是一个像您期望的那样扩展的类 - 值得阅读您遇到问题的模块函数:

https://github.com/nodejs/node/blob/master/lib/buffer.js#L172

扩展 Buffer 类将复制所有初始化 Buffer 新实例的方法,而不是您的新子类。因此,您将无法为您定义的行为扩展缓冲区类。或者,您可以用一个类包装它来创建类似的界面。

class MyBuffer {
constructor(arg) {
this.buffer = Buffer.from(arg)
}

static from(arg) {
return new MyBuffer(arg);
}

isZero() {
for(const value of this.buffer) {
// Fails on this line
console.log(value)
}
}
}

然后使用您喜欢的语法:

MyBuffer.from([0, 0]).isZero()

关于node.js - 创建 NodeJS Buffer 的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44909648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com