我有两个模块: apirequest.js feed.js。 当我在 apirequest 中调用feed.start()时,得到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() { }

10-06 04:43