一:this指针简介
this是 JavaScript 语言的一个关键字,它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。简而言之,this就是函数运行时所在的环境对象。
二:this的使用场景
2.1. 作为一般函数执行时,this 指代全局对象
function test(){
this.x = 1
console.log(this.x)
}
test()//Expected output: 1
2.2. 作为对象属性执行时,this 指代上级对象
function test(){
console.log(this.x)
}
var obj = {}
obj.x = 1
obj.f = test
obj.f()//Expected output: 1
2.3. 作为构造函数调用时,this 指代 new 出的对象
var x = 2
function test(){
this.x = 1
}
var obj = new test()
console.log(x)//Expected output: 2
console.log(obj.x)//Expected output: 1
2.4. call、apply、bind 调用时,this 指代第一个参数
let a = {}
let fn = function(){
console.log(this)
}
fn.bind().bind(a)()//Expected output: windows
上述代码中,不管我们给函数 bind 几次,fn 中的 this 永远由第一次 bind 决定,所以结果永远是 window