this 是函数 运行时 在函数体内部生成的一个 对象。
不同运行环境,this的值不同
一、纯粹函数调用
var x = 1
function test() {
console.log(this.x)
}
test()//1
全局调用,this即window
二、对象的方法
function test() {
console.log(this.x)
}
let obj = {}
obj.x=1
obj.m=test
obj.m()//1
函数作为对象的一个方法,调用时的this指上级对象
三、构造函数调用
所谓构造函数,就是通过这个函数,可以生成一个新对象。此时,this指向这个新对象。
let x=2
function test() {
this.x=1
}
let obj= new test()
obj.x//1
x//2
四、apply调用
apply()是函数的一个方法,作用是改变函数作用对象,它的第一个参数表示改变后的作用对象。this即指向第一个参数
var x=0
function test(){
console.log(this.x)
}
let obj={}
obj.x=1
obj.m=test
obj.m.apply()//0
obj.m.apply(obj)
apply 参数为空,此时默认为全局对象
网友评论