gpt4 book ai didi

javascript - 为什么在 Node.js 中使用 util.inherits 和 .call 进行继承

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:06 24 4
gpt4 key购买 nike

我想知道为什么在 Node 中创建一个新的 stream 类时,我需要同时使用 callutil.inherits

例如,在下面用于创建可读流的代码中,我必须同时使用两者:

var Readable = require('stream').Readable;
var util = require('util');


var MyStream = function (options) {
Readable.call(this, options)
}

util.inherits(MyStream, Readable); //Hasn't this already inherited all methods from Readable via "call"

var stream = new MyStream();

似乎 Readable.call 正在从 Readable 调用构造函数,因此 util.inherits 是不必要的。

最佳答案

util.inherits 会将原型(prototype)从 Readable 合并到 MyStream 中。更完整的继承感需要此原型(prototype)合并和构造函数调用。

构造函数调用 Readable.call( ... ) 将仅运行 Readable 的构造函数,可能会初始化一些变量并可能进行一些初始设置。

原型(prototype)合并 util.inherits(MyStream, Readable); 将采用 Readable 上的原型(prototype)方法并将它们粘贴到 MyStream 的任何 future 实例上。

因此,如果没有构造函数调用,您将无法获得初始设置,如果没有原型(prototype)合​​并,您将无法获得方法。从中您可以看出为什么这两个步骤都需要它。

关于javascript - 为什么在 Node.js 中使用 util.inherits 和 .call 进行继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832552/

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