# javascript中this指向
重要概念: this 是在运行时进行绑定的,并不是在编写时绑定
# 几种对this理解的误区
- this 指向自己
举一个很简单的例子
function dome(){
console.log(this) // window
}
dome()
这时我们发现,打印出来的this 是window(原因后面会讲) 但这个例子足以证明this不是指向自己
- this指向函数的作用域
这个例子不太好举,因为作用域是一种概念,不是一个函数也不是一段代码,他存在与js引擎内部。但是可以肯定的是this并不指向函数的作用域
# this 指向的几种情况
# 普通的this,谁调用指向谁
比如上面的例子:
function dome(){
console.log(this)
}
dome(); // window.dome()
可以看作是window调用了dome,只不过window我们省略了
TIP
在严格模式下 'use strict'
这时的this 指向 undefined
# 在构造函数中,this指向其构造函数
function dome(){
console.log(this); //dome
}
const D = new dome();
# bind call 可以改变this指向
function dome (){
console.log(this.name);
}
const name = '码不停息'
dome(); //这时打印出来的是 码不停息 因为 this 指向的是window
const obj = {
name:'lyh'
}
dome.call(obj) //这时打印出来的是 lyh this指向了 obj
# 在对象的方法里调用时,指向的是这个对象
const dome = {
this.name = '码不停息',
say:function(){
console.log(this.name)
}
}
dome.say() // 打印出来的是 码不停息