美文网首页
关于this

关于this

作者: 再见噜噜班 | 来源:发表于2019-11-26 20:42 被阅读0次

    this指向什么

    • JavaScript中,任何函数本质上是通过对象来调用的,如果没有直接指定,就是window对象
    function hi(){
            console.log('hi')
    }
    hi()  //hi
    window.hi() //hi
    console.log(hi === window.hi) //true
    
    • 每个函数内部都有一个this,指向调用函数的对象
    function foo(){
            console.log(this.a)
    }
    var a=1
    foo() //1,this指向window
    let obj = {
            a:2,
            foo:foo
    }
    obj.foo() //2,this指向obj
    var c = new foo()  //undefined,this指向c
    

    如何确定this的值

    this值的指向基本可以分为以下4种情况:

    • fn():直接调用函数,此时this指向window
    • obj.fn():通过对象调用,此时this指向当前调用该函数的对象
    • new fn():通过new创建对象,此时this指向创建的对象
    • fn.call(obj),fn.apply(obj):call,apply将this指向改成obj

    综合例子

    function Person(color){
            console.log(this)
            this.color = color
            this.getColor = function(){
                console.log(this)
                return this.color
            }
            this.setColor = function(color){
                console.log(this)
                this.color = color
            }
        }
    
        Person('red') //this是谁?window
        var p = new Person('Yellow')//this是p
        p.getColor()//this是p
    
        var obj = {};
        p.setColor.call(obj,'black')//this是obj
    
        var test = p.setColor;
        test();//this是window
    
        function fun1(){
            return function fun2(){
                console.log('sss')
            }
            fun2()//this是window
        }
    

    如有错误,请批评指正。

    相关文章

      网友评论

          本文标题:关于this

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