[英]understanding javascript inheritance and node.js util inherits function example
I have two modules: apirequest.js and feed.js. 我有两个模块: apirequest.js和feed.js. When I call
feed.start()
in apirequest , I get, TypeError: Object #<Feed> has no method 'start'
. 当我在apirequest中调用
feed.start()
时,我得到, TypeError: Object #<Feed> has no method 'start'
。 Why is this? 为什么是这样? Doesn't
util.inherits(Feed, APIRequest);
不是
util.inherits(Feed, APIRequest);
inherit APIRequest's properties? 继承APIRequest的属性?
apirequest.js 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 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();
The problem is order: 问题是顺序:
APIRequest.prototype.start = function() { }
util.inherits(APIRequest, EventEmitter); <-- *overwrites* APIRequest.prototype
If you swap those lines, it'll work: 如果你交换这些行,它将工作:
util.inherits(APIRequest, EventEmitter);
APIRequest.prototype.start = function() { }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.