【发布时间】:2016-02-06 12:02:10
【问题描述】:
我正在阅读this article 关于在节点中扩展 EventEmitter 类的内容,其中有一小部分我不明白:
Door.prototype.__proto__ = events.EventEmitter.prototype;
我查看了几篇关于这应该如何工作的文章,但真的不明白。我知道,或者,我也可以使用util.inherits,但我试图了解上面一行中发生了什么。
我也想知道这样做是否会产生与使用 __proto__ 相同的结果:
Door.prototype = Object.create(EventEmitter.prototype);
//or
Door.prototype = new EventEmitter(); // I know this also calls constructor
那么,这三种方法有什么区别,__proto__ 是如何工作的呢?
编辑:
所以我查看了发布的链接。我知道原型基本上用于构建__proto__,然后在查找链中使用它来解析方法。我链接到的文章还说,这一行将所有 EventEmitter 属性复制到门对象:
Door.prototype.__proto__ = events.EventEmitter.prototype;
现在我的问题(之前可能还不清楚)是:如果上面一行的点是将 EventEmitter 的属性复制到门对象,我认为可以通过这样做来实现:
Door.prototype = new EventEmitter();
【问题讨论】:
-
这个问题可能也有帮助(有一篇好文章的链接)stackoverflow.com/questions/9959727/…
标签: javascript node.js inheritance eventemitter