我有两个模块:apirequest.js 和 feed.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/