鍍金池/ 問答/HTML/ TypeError: acount.on is not a function

TypeError: acount.on is not a function

看到一個(gè)關(guān)于事件監(jiān)聽器和發(fā)射器的例子,但是輸入后出現(xiàn):

acount.on("balanceChanged",displayBalance);
       ^

TypeError: acount.on is not a function
    at Object.<anonymous> (D:\Myworkspace\Git\repository\emitter_Listener.js:47:8)
    at Module._compile (module.js:612:30)
    at Object.Module._extensions..js (module.js:623:10)
    at Module.load (module.js:531:32)
    at tryModuleLoad (module.js:494:12)
    at Function.Module._load (module.js:486:3)
    at Function.Module.runMain (module.js:653:10)
    at startup (bootstrap_node.js:187:16)
    at bootstrap_node.js:608:3

例子的代碼:

var events = require('events');

function Account(){
    this.balance = 0;
    events.EventEmitter.call(this);
    this.deposit = function(amount){
        this.balance += amount;
        this.emit('balanceChanged');
    };
    this.withdraw = function(amount){
        this.balance -= amount;
        this.emit('balanceChanged');
    };
}
Account.prototype._proto_ = events.EventEmitter.prototype;

function displayBalance(){
    console.log("account balance: $%d" , this.balance);
}

function checkOverdraw(){
    if(this.balance < 0){
        console.log("account overdraw!!!");
    }
}

function checkGoal(acc,goal){
    if(acc.balance > goal){
        console.log("goal achieved!!!");
    }
}

var account = new Account();
account.on("balanceChanged",displayBalance);
account.on("balanceChanged",checkOverdraw);
account.on("balanceChanged",function(){
    checkGoal(this,1000);
});
account.deposit(220);
account.deposit(320);
account.deposit(600);
account.withdraw(1200);

懷疑是不是events模塊引入問題,求大神糾正下。

回答
編輯回答
愚念
Account.prototype._proto_ = events.EventEmitter.prototype;

__proto__是不是寫錯(cuò)了,沒有繼承到事件模塊的方法。

2017年2月17日 05:13