我有具體的問題有點繼承在JavaScript中,而不是Node.js的:的Node.js EventEmitter和iife模式
// foo.js
var events = require('events');
var util = require('util');
var Foo = (function(){
var foo = {};
events.EventEmitter.call(foo);
foo.init = function(){
foo.emit('bar');
};
util.inherits(parser, events.EventEmitter);
return {
bind: foo.init,
on: foo.on // I suppose this resolves to event emitter's on method
};
}());
module.exports = Foo;
然後,當我只是試圖調用(比如在main.js):
var foo = require('./foo.js');
foo.on('bar', function(){ ... });
我連呼foo.init();
之前產生一個錯誤:
foo.on('bar', function(){ ... })
^
TypeError: Property 'on' of object #<Object> is not a function
難道就沒有可能繼承FR當我選擇以IIFE模式進行編碼時,EventEmitter?或者我的錯誤與其他相關?
尼斯的解釋,但是,我要保持我的模式,以封裝和不提供所有我的功能馬上。 – px5x2
由於這是用** Node.js **編寫的,因此無論如何都不會有本地變量泄漏到全局範圍,因此您不應該擔心這一點。只有分配給* exports *屬性的內容在模塊外部可用。 Besisdes,我建議的解決方案考慮到,你想保持這種模式,並不與它衝突。 (只有第二行代碼是相關的)。 –