简体   繁体   English

理解javascript继承和node.js util继承函数的例子

[英]understanding javascript inheritance and node.js util inherits function example

I have two modules: apirequest.js and feed.js. 我有两个模块: apirequest.jsfeed.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM