gpt4 book ai didi

javascript - 函数原型(prototype) Node 不工作

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:47 25 4
gpt4 key购买 nike

我正在像这样的 Node 中创建一个可观察的模式。

./tableEvents.model.js

var EventEmitter = require('events').EventEmitter;
var util = require('util');

module.exports = function(logger){

function TableEvent(tableId){
this.tableId = tableId;
EventEmitter.call(this);
}

TableEvent.prototype.startTimer = function(){
this.timer = setTimeout(function(){
console.log('been 5 seconds, destroying');
this.emit('destroy');
}, 5000);
};

util.inherits(TableEvent, EventEmitter);

return TableEvent;

};

然后在我的route.js文件中

var TableEvent = require('../models/tableEvents.model')(logger);

var tableEvent = new TableEvent(table._id);

tableEvent.startTimer();

tableEvent.on('destroy', function(){
console.log('destroyed');
clearInterval(tableEvent.timer);
});

现在当它尝试 tableEvent.startTimer(); 时我在控制台中收到此错误

tableEvent.startTimer is not a function

这是为什么?

最佳答案

util.inherits() 覆盖继承对象/构造函数的原型(prototype)以完成其任务。您只需要在调用 util.inherits() 之后更改原型(prototype):

function TableEvent(tableId){
this.tableId = tableId;
EventEmitter.call(this);
}

util.inherits(TableEvent, EventEmitter);

TableEvent.prototype.startTimer = function(){
this.timer = setTimeout(function(){
console.log('been 5 seconds, destroying');
this.emit('destroy');
}, 5000);
};

关于javascript - 函数原型(prototype) Node 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411764/

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