JavaScript中this的指向

首先应该知道,this在调用的时候才会指向具体的对象。

最后是谁调用的,this就指向谁。

先来看几个小例子。

function a(){
    console.log(this);  //Window
}
a()
var o = {
    a() {
        console.log(this); //{a: ƒ}即o对象
    }
}
o.a()
var o = {
    a() {
        console.log(this); //Window
    }
}
var b = o.a;
b();

这几个例子是很容易理解的,即在最后调用函数的时候,this的指向才会决定。

 

接下来看看this在构造函数中是怎么指向的吧。

情况1:直接调用构造函数,emmm这种情况跟上面函数是一样的吧就不说了。其实构造函数还是用new调用才有它存在的意义嘛。

情况2:使用new来创建对象的实例,这个时候this指向的是P对象啦。

function P() {
    this.name = 'xuxuya';
    console.log(this); //P {name: "xuxuya"}
}
var b = new P();

情况3:当构造函数遇上了return。嘻嘻~来看看会怎样把

function P() {
    this.name = 'xuxuya'; 
    return {name:'fefe'};// 当return的是任意引用类型的时候
}
var b = new P();
console.log(b); //{name: 11}  返回的是对应的类型
console.log(b.name);//fefe  这个当然也会变化啦
function P() {
    this.name = 'xuxuya'; 
    return 1;// 当return的是任意值类型的时候
}
var b = new P();
console.log(b); //P {name: "xuxuya"}  返回的是构造函数中的对象。
console.log(b.name);//xuxuya

 

你可能感兴趣的:(JavaScript中this的指向)