关于this指向的考题

第一题

<script>
    window.name = 'ByteDance';
    function A(){
        this.name = 123;
    }
    A.prototype.getA = function(){
        console.log(this);//this代表window
        return this.name +1;//ByteDance1
    }
    let a = newA();
    let funcA = a.getA;
    console.log(a.getA);//fn(){}
    funcA();
</script>

第二题

<script>
    var length = 10;
    function fn(){
        return this.length + 1;
    }
    var obj = {
        length:5,
        test1:function(){
            return fn();
        }
    }
    obj.test2 = fn;
    console.log(obj.test());//11
    console.log(fn()===obj.test2());//false 11!=6
    console.log(obj.test1()==obj.test2());//false 11!=6
</script>

第三题

<script>
    function Foo(){
        getName = function(){
            console.log(1)//注意是全局的
        }
        return this;
    }
    Foo.getName = function(){
        console.log(2)
    }
    Foo.prototype.getName = funcytion(){
        console.log(3)
    }
    var getName = function(){
        console.log(4)
    }
    function getName(){
        console.log(5)
    }
    Foo.getName();//2
    getName();//4
    Foo().getName();//1
    getName();//1
    new Foo().getName();//3
</script>

第四题

<script>
    var o = {
        a:10,
        b:{
            fn:function(){
                console.log(this.a);//undefined
                console.log(this);//b
            }
        }
    }
    o.b.fn();
</script>

猜你喜欢

转载自blog.csdn.net/m0_73460278/article/details/126985129