2017-03-17 90 views
-1
var events = require('events'); 
var util = require('util'); 

var person = function (name) { 
    this.name = name; 
}; 

util.inherits(person, events.EventEmitter); 

var james = new person('james'); 
var people = ['james']; 

people.forEach(function (person) { 
    person.on('speak', function (msg) { 
     console.log(person.name + 'said:' + msg); 
    }); 
}); 

james.emit('speak', 'hey hello'); 

我得到一個錯誤的NodeJS/JavaScript的:類型錯誤:person.on不是一個函數

person.on('speak', function (msg) {

 ^TypeError: person.on is not a function 

事件& util的內置模塊

+1

用'var people = [james];'替換。你不想在這一點上使用一個字符串。 – Sirko

回答

0

更改此:

var people = ['james']; 

對此:

var people = [james]; 

當你把數組中的字符串,這就是你要去當你遍歷數組.forEach()和字符串'james'沒有.on()方法使你得到你所看到的錯誤得到什麼。

取而代之的是,在數組中放入對實際對象的引用。

相關問題