关于this

2019-11-26  本文已影响0人  再见噜噜班

this指向什么

function hi(){
        console.log('hi')
}
hi()  //hi
window.hi() //hi
console.log(hi === window.hi) //true
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种情况:

综合例子

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
    }

如有错误,请批评指正。

上一篇下一篇

猜你喜欢

热点阅读