javascript - TypeError:无法读取未定义的属性“_events”
问题描述
为什么我会收到此错误?
events.js:133
if (this._events === undefined ||
^
TypeError: Cannot read property '_events' of undefined
at EventEmitter.init (events.js:133:12)
at EventEmitter (events.js:66:21)
at Object.<anonymous> (D:\Coding\Online\Node.js\FreeCodeCamp\les2_TheEventModuleAndEventEmitterClass\app.js:10:22)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:10
92:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/ru
n_main.js:72:12)
at internal/main/run_main_module.js:17:47
PS D:\Coding\Online\Node.js\FreeCodeCamp\les2_TheEventModuleAndEventEmitterClass>
我只写了这个:
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
class Person extends EventEmitter(){
constructor(name){
super();
this._name = name;
}
get name(){
return this._name;
}
}
let pedro = new Person('Pedro');
pedro.on('name',()=>{
console.log('my name is ' + pedro.name);
});
pedro.emit('name')
我在哪里做错了?提前致谢
解决方案
问题是您在类声明中添加了括号。您的代码应该是:
const EventEmitter = require('events');
const eventEmitter = new EventEmitter();
class Person extends EventEmitter { // This is what was changed
constructor(name){
super();
this._name = name;
}
get name(){
return this._name;
}
}
let pedro = new Person('Pedro');
pedro.on('name',()=>{
console.log('my name is ' + pedro.name);
});
pedro.emit('name')
仅供参考,您不需要实例化 EventEmitter 类来扩展它。如果您不使用 object ,则可以删除第二行eventEmitter
。
推荐阅读
- c# - 使用 chrome 开发工具 (C#) 在 selenium 4rc2 中添加额外的请求头
- entity-framework - 在遍历 EF Core 5 中的多个条件包含后查询任何条目
- javascript - 具有连接值的对象数组应移动到匹配值的子项
- typescript - 使用打字稿泛型类型根据对象中的兄弟字段设置函数参数类型
- python - 再次播放功能导致在刽子手游戏中被要求再次播放的循环
- mysql - 错误代码:1064 - 我的 SQL:动态行到列
- unity3d - 场景视图的某些部分似乎没有渲染
- html - 在 Google Sheet 中使用 ImportHTML 和 XPath 获取元素
- kotlin - 从不同的流程收集时,我应该从协程中发出吗?
- arrays - C如何从多个函数返回数组?