this的指向总结

    // this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象.
    // 根据函数调用的方式不同,this会指向不同的对象,跟创建方式没有关系.


    // 1、以函数的形式调用时。this指向的是window
    function fun() {
        console.log(this.name)
    }
    // fun();



    // 2、以方法的形式调用时,this就是调用方法的那个对象
    var obj={
        name:"小明",
        aa:fun
    };

     // obj.aa();



    // 3、如果不在第一层调用,那么this只会指向当前层
    var a={
        b:5,
        c:{
            b: 10,
            d:function () {
                console.log(this.b)
            }
        }
    };

    // a.c.d()



    // 4、如果将这个方法赋值给变量时,this会改变对象的指向

    var n={
        name:"狗子",
        firstname:function () {
           console.log(this.name)
        }
    };

    var x={
        name:"笨蛋"
    };

    x.firstname=n.firstname;
    // x.firstname()
    n.firstname()



    // 5、在构造函数中,this的指向实例化的对象


    var person=function () {
        this.name="蔡徐坤"
    };

    var cxk=new person ();
    // console.log(cxk.name)

猜你喜欢

转载自www.cnblogs.com/dumenglong/p/11037767.html