// 事件对象 var Event = function(obj) { this.obj = obj; this.getSource = function() { return this.obj; } } // 监听对象 var F2 = function() { this.hander = function(event) { var f2 = event.getSource(); console.log("f2 do something!"); f2.callback(); } } // 被监听对象 var F1 = function() { this.abc = function() { console.log("f1 do something one!"); // 创建事件对象 var e = new Event(this); // 发布事件 this.f2.hander(e); console.log("f1 do something two!"); } this.on = function(f2) { this.f2 = f2; } this.callback = function() { console.log("f1 callback invoke!"); } } // 主函数 function main() { var f1 = new F1(); var f2 = new F2(); // 加入监听 f1.on(f2); f1.abc(); } // 运行主函数 main();