this的四种情况

2019-07-08  本文已影响0人  宁公子_5dce

this是JS中的很常用的一个属性,它在调用时有四种情况:

1、以函数形式调用时,this永远都是window。

function fun(){

console.log(this)

}

fun();

//输出为:"[object Window]"

2、以方法的形式调用时,this是调用方法的对象。

function fun(){

console.log(this)

}

var obj = {

sayName:fun

}

obj.sayName();

fun();

//输出为:

//"[object Object]"

//"[object Window]"

//可以看到,调用的方法和调用的函数指向的是同一个函数,但是调用方法输出的已经变成的Object

3、以构造函数的形式调用时,this是新创建的那个对象。

var name = "全局";

function fun(){

console.log(this.name);

}

var obj = {

name : "OBJ1",

sayName : fun

}

var obj2 = {

name : "OBJ2",

sayName : fun

}

var obj3 = {

name : "OBJ3",

sayName : fun

}

obj2.sayName();

//输出为:"OBJ2"

//可以看到,调用那个对象,this就会成为那个对象

4、使用call()和apply()方法调用时,this是指定的那个对象。

var name = "全局";

function fun(){

console.log(this.name)

}

var obj = {name:"OBJ"}

var obj2 = {name:"OBJ2"}

fun.call(obj2);

fun.apply(obj);

fun();

//输出分别是:

//"OBJ2"

//"OBJ"

//"全局"

//可以看到,参数是谁、输出的就是谁。
上一篇 下一篇

猜你喜欢

热点阅读