贴上一段同事写的代码,值的纪念
<script type="text/javascript"> //创建箱子类 function Box(option) { var self = this; var _option = { height: 12, 12 }; //合并参数对象 : 记得引用Jquery.js $.extend(_option, option); this.height = _option.height; this.width = _option.height; //绑定事件列表 var _events = {}; //创建一个方法,并带有回调函数 this.push = function(option, callback) { if (option.height > this.height) { console.error("over height", this); return; } if (option.width > this.width) { console.error("over width", this); return; } //判断是否有回调函数 if (callback instanceof Function) //调用回调函数,并给它传值(参数:_option) callback.call(this, _option); } //绑定事件 this.on = function(name, event) { if (name == null || !name) return null; if (!(event instanceof Function)) if (self[name] instanceof Function) { return self[name](); } if (event instanceof Function) _events[name] = self[name] = function() { event.apply(this); return this; } } //解除绑定事件 this.unbind = function(name) { delete self[name]; delete _events[name]; //链式表达式 return this; } } //创建box1对象 var box1 = new Box(); //创建box2对象 var box2 = new Box(); //调用方法 box1.push({ height: 12, 12 //回调函数 }, function(option) { console.log("push回调函数已调用..", option); }); //动态给对象绑定事件 box1.on("click", function() { this.width += 10; console.log("width递增10,click事件被调用..", this.width); }); box1.on("heihei", function() { console.log("heihei事件被调用..", this.width); }); //事件普通调用 box1.click(); //链式表达式调用方法 box1.on("click").click().heihei().on("heihei"); //打印box1的宽度 console.log(box1.width); //打印box2的宽度 console.log(box2.width); //解除绑定事件 box1.unbind("heihei"); //测试解除 box1.heihei(); </script>