演示事件的發送和監聽ui
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);
打印結果:this
Account balance: $220 Account balance: $540 Account balance: $1160 Goal archieved!!! Account balance: $-40 Account overdraw!!!