美文网首页
this指向浅析

this指向浅析

作者: 肖青荣 | 来源:发表于2020-10-24 11:01 被阅读0次

    一般来说,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是那个调用它的对象。
    1.全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window

    console.log(this);//指向window
    
     function fn() {
         console.log(this);//指向window
    
     }
     window.fn();
    
     window.setTimeout(function() {
         console.log(this);//指向window
     }, 1000);
    

    2.方法调用中谁调用this指向谁

    var o = {
                sayHi: function() {
                    console.log(this); // this指向的是 o 这个对象
    
                }
            }
            o.sayHi();
    

    3.构造函数中this指向构造函数的实例

     function Fun() {
                console.log(this); // this 指向的是fun 实例对象
    
            }
    

    4.如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象

    var o = {
        a:10,
        b:{
            fn:function(){
                console.log(this.a); //undefined
            }
        }
    }
    o.b.fn();
    
    尽管对象b中没有属性a,这个this指向的也是对象b,因为this只会指向它的上一级对象,不管这个对象中有没有this要的东西
    

    5.箭头函数中的this引用的是最近作用域里的this,向外层作用域中,一层层查找this, 直到有this的定义

    const obj = {
        aaa() {
          setTimeout(function () {
            console.log(this);// 指向window
          })
    
          setTimeout(() => {
            console.log(this);//指向obj对象
          })
        }
     }
    

    相关文章

      网友评论

          本文标题:this指向浅析

          本文链接:https://www.haomeiwen.com/subject/xsyimktx.html