<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script> function EventObject() { var eventRepository = {}; this.attach = function (eventName, handler) { eventRepository[eventName] = eventRepository[eventName] || []; eventRepository[eventName].push(handler); } this.fire = function (eventName) { var handlers = eventRepository[eventName]; if (handlers) { for (var i = 0; i < handlers.length; i++) { handlers[i](); } } } } function PersonClass(name, age) { EventObject.call(this); this.name = name; this.age = age; this.getName = function () { return this.name; } } PersonClass.prototype.introduce = function () { console.info("I'm " + this.name + ", " + this.age + " years old"); } function EmployeeClass(name, age, emNO, title) { PersonClass.call(this, name, age); this.emNo = emNO; this.title = title; } EmployeeClass.prototype = new PersonClass(); EmployeeClass.prototype.finishAJob = function () { console.log("I am promoted, I will be given a more important job or rank in the organization that I work for"); this.fire("promote"); } var emp1 = new EmployeeClass("wj", 18, "2705", "senior"); var emp2 = new EmployeeClass("wsc", 28, "9705", "senior"); emp1.introduce(); emp2.introduce(); emp2.attach("promote", function () { alert("treat my friends!"); }); emp2.finishAJob(); </script> </head> <body> </body> </html>