Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 某些节点对象是否从两个类继承?_Javascript_Node.js - Fatal编程技术网

Javascript 某些节点对象是否从两个类继承?

Javascript 某些节点对象是否从两个类继承?,javascript,node.js,Javascript,Node.js,在node中,它表示: “传递给处理程序的请求对象实现 ReadableStream接口。“ 但后来也说, 注意:请求对象是IncomingMessage的实例 那么,request又是如何实现IncomingMessage实例和RedableStream接口的呢? 在JS中如何实现这一点? 另外,我认为在JS中没有接口?对象可以“实现”和“成为”某个对象的实例,但接口只是为了文档目的 在JS中,成为某物的实例意味着某物的obj instanceof是真的 在动态语言(如JavaScript)中

在node中,它表示:

“传递给处理程序的请求对象实现 ReadableStream接口。“

但后来也说,

注意:请求对象是IncomingMessage的实例

那么,
request
又是如何实现IncomingMessage实例和RedableStream接口的呢? 在JS中如何实现这一点? 另外,我认为在JS中没有接口?

对象可以“实现”和“成为”某个对象的实例,但接口只是为了文档目的

在JS中,成为某物的实例意味着某物的
obj instanceof
是真的

在动态语言(如JavaScript)中,实现接口意味着对象应该具有某些方法。这通常被称为

如果IncommingMessage的行为类似于ReadableStream,并且可以用作ReadableStream,那么它必须是ReadableStream

如果您查看,您会看到:

/* Abstract base class for ServerRequest and ClientResponse. */
function IncomingMessage(socket) {
  Stream.Readable.call(this);
  ....
}
这是:

util.inherits(IncomingMessage, Stream.Readable);
这表明
IncomingMessage
构造函数继承自
流。可读的
。它还覆盖一些可读的方法来修改它们的行为

在JS中如何实现这一点


您可以创建自己的对象,该对象继承自另一个对象。

如果您想了解更多信息并更深入地理解,请阅读源代码@timothyclifford还不错,但由于我不是一个经验丰富的JS开发人员,我想有人可以在这里详细介绍一下,或者只是解释一下我提到的如何在node中完成事情的“一些”基础知识。一个对象既可以“实现”也可以“成为”某物的实例。接口是用于文档的,不是真实的。@elclans在JS中是这样的吗?你能链接到一些关于实现这一点的JS部分的资料吗?在JS中,实现和接口意味着它具有某些属性和方法,通常是在对象中进行修补。作为某事物的实例意味着某事物的对象实例是正确的。除了在IncomingMessage的情况下,它实际上从ReadableStream继承。常规Javascript继承。很好。所以在这种情况下,它只是一个原型链。我猜在概念上,当我在动态语言中阅读“实例”时,我认为是继承,而“实现”我认为duck类型不一定是继承链。所以
request
是IncomingMessage的实例,它继承自Stream。Readable-就是这样?@johna-是的,基本上就是这样。您可以看到IncomingMessage对象的创建位置。