模仿JQuery 的添加多个事件的原理
var jquery=function(dom){ var obj={ ready:function(fn){ if(typeof dom.onload=="function"){ //如果存在 先执行新的函数 在执行旧的函数 否则直接执行呗 var old=dom.onload; dom.onload=function(){ fn(); //新的 old(); //旧的 } } else{ dom.onload=fn; } } } return obj; } window.onload=function(){ alert('其实我执行了'); } jquery(window).ready(function(){ alert(123); });
//说到底原理上还是覆盖了
/*
只是第一次执行函数的的时候 old=dom.onload 是一个空函数 它肯定也执行了 就是 新的fn 和一个空函数
第二次执行函数的时候 第一次传入的函数fn 赋值给了old 然后执行了 新的fn 和上次的fn
原理就是新的会覆盖以前的 onload 只会执行一次最新的onload 只不过把前两次定义的函数都包在一个onload里面了
所以呈现出一种不会覆盖的假象
妙哉
如果在定义一个 就把之前的包在里面 形成递归的原理!!!!
大化小 小化无!!
*/