javascript - 理解javascript继承和node.js util继承函数示例

标签 javascript node.js oop inheritance

我有两个模块:apirequest.jsfeed.js。 当我调用 feed.start() 时在 apirequest 中,我得到了 TypeError: Object #<Feed> has no method 'start' .为什么是这样?不是util.inherits(Feed, APIRequest);继承 APIRequest 的属性?

apirequest.js

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

function APIRequest(endpoint) { } 

APIRequest.prototype.start = function() { }

util.inherits(APIRequest, EventEmitter);

module.exports = APIRequest;

feed.js

var util = require('util');
var APIRequest = require('../lib/api_request');

function Feed(endpoint) {
  APIRequest.call(this, endpoint);
}

util.inherits(Feed, APIRequest);

var feed = new Feed(endpoint);

feed.start();

最佳答案

问题是顺序:

APIRequest.prototype.start = function() { }
util.inherits(APIRequest, EventEmitter); <-- *overwrites* APIRequest.prototype

如果你交换这些行,它会起作用:

util.inherits(APIRequest, EventEmitter);
APIRequest.prototype.start = function() { }

关于javascript - 理解javascript继承和node.js util继承函数示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493285/

相关文章:

javascript - _.each(list, iterator, [context]) 中的上下文是什么?

javascript - 无法获取json数据,给出Cors或回调错误

node.js - mongoose hook 访问原始参数

jquery - 使用 Cheerio.js 迭代表中的 TR

oop - 与面向对象设计相关的组合是什么?

javascript - JQuery UI 对话框模式表单在 AJAX 应用程序中缓存旧值

javascript - JQuery fadeIn 在 Chrome 上没有完全淡入

node.js - 如何在模型的属性方法中正确使用水线 promise ?

PHP:为什么不能扩展多个类?

java - java中装饰器和状态模式的结合——关于OO设计的问题