1:事件覆盖的问题 //传统绑定有可能因为两个相同名字 而造成覆盖问题 只是显示最后一个函数功能 window.onload = function(){ alert('msr.lee'); }; if(typeof window.onload == 'function'){ var svaed = null; //通过判断上一个事件的typeof然后保存到一个变量中 saved = window.onload; //相当于是给saved绑定了上一个函数的功能 } window.onload = function(){ if(saved) saved(); //在第二个函数内通过调用绑定的保存函数使用上一个函数功能 alert('lee'); }; 2:通过匿名函数执行某个函数时,那么里面的this代表window window.onload = function(){ var box = document.getElementById('box'); box.onclick = toBlue; // 这里由于是把toBule函数绑定到box上,所以在toblue函数里的this是代表box }; /* 如果改成下面这样传递函数 window.onload = function(){ var box = document.getElementById('box'); box.onclick = function(){ toBlue(); //这里通过构造一个匿名函数 里面执行toblue函数 并没有把他绑定给box 所以toblue里的this代表全局的window } }; */ function toBlue(){ this.className = 'blue'; } 3:匿名函数中的this指他绑定的对象 例如上面的例子中改写成 box.onclick = function(){ toBlue.call(this); //this代表box,因为是在box下创建的匿名函数。然后通过call方法把toblue函数绑定到box.onclick上 };
浙公网安备 33010602011771号