2013-03-19 11 views
10

मेरे पास दो मॉड्यूल हैं: apirequest.js और feed.js. जब मैं apirequest में feed.start() कहते हैं, मैं मिलता है, TypeError: Object #<Feed> has no method 'start'। ऐसा क्यों है? util.inherits(Feed, APIRequest); एपीआईआरक्वैस्ट की संपत्तियों का उत्तराधिकारी नहीं है?जावास्क्रिप्ट विरासत और node.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

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(); 

उत्तर

13

समस्या आदेश है:

APIRequest.prototype.start = function() { } 
util.inherits(APIRequest, EventEmitter); <-- *overwrites* APIRequest.prototype 

आप उन पंक्तियों स्वैप, तो यह होगा काम:

util.inherits(APIRequest, EventEmitter); 
APIRequest.prototype.start = function() { } 
+0

धन्यवाद! हाँ, मैंने बस ऐसा किया और आपका जवाब आया;) –

+0

धन्यवाद, महान जवाब! –

संबंधित मुद्दे