const events = require("events");

function Account() {
this.balance = 0;
events.EventEmitter.call(this); this.deposid = 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 archieved!!!");
}
} const account = new Account();
account.on("balanceChanged", displayBalance);
account.on("balanceChanged", checkOverdraw);
account.on("balanceChanged", function () {
checkGoal(this, 1000);
}); account.deposid(220);
account.deposid(320);
account.deposid(620);
account.withdraw(1200);

打印结果:

Account  balance: $220
Account balance: $540
Account balance: $1160
Goal archieved!!!
Account balance: $-40
Account overdraw!!!
04-26 10:23