热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何正确地从Node.js中的EventEmitter继承

本文介绍了如何在Node.js中正确地从EventEmitter继承,并避免常见的陷阱。

在Node.js中,第三个示例通常 是正确的做法:EventEmitter所有 实例创建一个共享的事件实例。

让我们通过一个简单的例子来理解这个问题:

var Foo = function() {
// 每个 Foo 实例都有一个唯一的 id
this.id = Math.random();
}
Foo.prototype.doFoo = function() { console.log('Foo!'); }

假设我们想要创建一个 Bar 构造函数,该构造函数继承自 Foo 并添加一些新属性。如果按照最后一个示例的做法:

var Bar = function() {
this.something = 5;
}
Bar.prototype = new Foo();

这是错误的,因为所有 Bar 实例将具有相同的 id 属性。为了确保每个实例都有唯一的 id,我们需要在每个实例化过程中调用父构造函数:

var Bar = function() {
Foo.call(this); // 在当前实例上设置唯一的 `id`
this.something = 5;
}
Bar.prototype = Object.create(Foo.prototype);

请注意,这里的最后一行与 Bar.prototype.__proto__ = Foo.prototype; 相同,因为 Object.create 创建了一个新对象,其 __proto__ 被设置为 Object.create 的参数。

通过这种方式,我们可以确保每个 Bar 实例都正确地继承了 Foo 的属性和方法,并且每个实例都有唯一的 id


推荐阅读
author-avatar
婷518婷_239
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有