理解javascriptinheritance和node.js utilinheritance函数的例子

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

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() { }