js 函数中this的指向(部分)

在函数中this到底取何值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了

function Foo(){
    this.name='kkk';
    this.year=2019;
    console.log(this);//window
    console.log(this.year)//2019
}
Foo()
function Foo(){
    this.name='kkk';
    this.year=2019;
    console.log(this);  //Foo{name:'kkk',year:2019}
    console.log(this.year)//2019
}
var a=new Foo();
console.log(a.name)//'kkk'
console.log(a.year)//2019

直接调用构造函数的this与new的对象的this不一样

var obj={
    x:10,
    fn:function(){
        console.log(this);
        console.log(this.x)
    }
}

obj.fn();
//{ x: 10, fn: [Function: fn] }
//10

函数作为对象的一个属性,并且作为对象的一个属性被调用时,函数中的this指向该对象。

var obj={
    x:10,
    fn:function(){
        console.log(this);
        console.log(this.x)
    }
}

f=obj.fn;
f();
//window
//undefined

fn函数被赋值到了另一个变量中,并没有作为obj的一个属性被调用,那么this的值就是window,this.x为undefined

你可能感兴趣的:(js 函数中this的指向(部分))