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上    
    };        

 

posted on 2018-01-25 21:14  YKing_匆  阅读(106)  评论(0)    收藏  举报