问答详情
源自:9-22 编程练习

关于highlight()中this的指向问题

     function Highlight(){
        var tbody = document.getElementById('table').lastChild;    
        trs = tbody.getElementsByTagName('tr');   
        for(var i =1;i<trs.length;i++){
            trs[i].onmouseover = function(){
                this.style.backgroundColor ="#f2f2f2";
            } 
            trs[i].onmouseout = function(){
                this.style.backgroundColor ="#fff";
            } 
        }
     }

this指向最终调用它的对象   上述代码中this指向了trs[i] 

但是!!

var bar = function () {console.log(this)}
bar()

此处的this则是指向了window

这边感觉两处代码形式基本相同 为何指向不一样呢

提问者:羽宫秦4101021 2017-08-09 23:30

个回答

  • 羽宫秦4101021
    2017-08-09 23:37:32

    请问有没有可能是因为第一段代码中的this,是对象方法(属性)的函数的this,其函数针对的是那个对象的方法(属性)而非那个对象本身,所以作为“最终调用这个方法(属性)的‘那个对象’”成为了this的指向呢?

    初学菜鸡,对面向对象的理解还不是很透彻,求解~