Appearance
this指向
内容来自稀土掘金 this指向/箭头函数this指向详解
常见的this指向:
- 全局作用域中或者普通函数中this指向全局对象window
- 立即执行函数this必定指向window
- 定时器this指向window
- 事件中this指向事件源对象
- 方法中谁调用就指向谁
- 构造函数中this指向对象实例
隐式绑定
谁调用就指向谁
javascript
let obj = {
name: 'obj',
foo: function () {
console.log(this); //this指向obj
}
}
obj.foo()javascript
let obj = {
name: 'obj',
foo: function () {
console.log(this); //obj
function test() {
console.log(this); //window 为什么? 因为test独立调用
}
test()
}
}
obj.foo()隐式丢失
javascript
let obj = {
name: 'obj',
foo: function () {
console.log(this); //window 为什么不是obj? bar拿到obj.foo的引用,然后在全局下独立调用
}
}
let bar = obj.foo
bar()函数作参数
javascript
function foo(){
console.log(this); // window obj.foo在bar函数内独立调用
}
function bar(fn){
fn()
}
let obj = {
name: 'obj',
foo: foo
}
bar(obj.foo)显示绑定
call、apply、bind
bind返回一个新函数,新函数指向绑定的对象,旧函数不会
new绑定
this指向函数实例化之后的对象
绑定规则优先级
new绑定 > 显示绑定 > 隐式绑定 > 默认绑定
箭头函数的this
箭头函数没有自己的this指向。它的this指向上一级作用域的this。