function creatfunction(obj,skill){//这里写一个将处理事件流程的函数转化为无参数函数的函数(其实就是在它外层包一个无参数函数)
if(!obj){obj=window;} //如果没传入哪个对象的参数 让他默认指向window
var arr=[]; //建立一个空数组 用来存放传进来的事件参数
for(var i=2;i<arguments.length;i++){
arr.push(arguments[i]); //用for循环 和隐式类数组参数arguments剔除干扰参数
} //仅仅留下事件处理所需参数
return function(){ //返回这个无参数函数(一个空壳而已)
obj[skill].apply(obj,arr); //用apply巧妙得到事件处理函数的流程
}
}
function Person(){}
Person.prototype={
show:function(){
this.onshow(); //这里写一个抽象函数(抽象方法)
},
onshow:function(){ //事件处理流程的api接口
//测试时 发现不写也没什么影响...
}
}
function add(a,b){ //创造未来需要的事件处理流程函数
alert(a+b);
}
var man=new Person(); //创造实例对象
man.οnshοw=creatfunction(null,'add',3,5);//把事件处理流程给预留的抽象方法
man.show();//8 //调用show从而触发onshow事件处理;