看一遍就能掌握 js 中的 this 指向

2020-06-01  本文已影响0人  Super超_fee3
关于 this 指向,可能有一部分人都是模糊的,本文对常见情况下的 this 指向作出总结,让你不再皱眉。

先了解

一个基本概念:普通函数的 this 指向不是在定义的时候确定,而是在调用的时候确定。

两个注意事项:

接下来从一般形式函数调用、方法调用、apply 和 call 调用、箭头函数、class 等理清指向问题。

1. 一般形式函数调用

所谓一般形式函数调用就是 函数名(),this 指向全局对象。

function test() {
  console.log(this.name) // fang
}
var name = 'fang'
// let、const 声明的变量不是 Window 属性
const age = 1
console.log(this) // Window
console.log(this.age) // undefined
test()

2. 方法调用

一个函数被设置为对象(非全局对象)的属性值时,就是方法调用,this 指向对象自身。

3. call、apply 和 bind 用来改变 this 指向

4. 箭头函数

箭头函数没有自己的 this,看其定义时外层是否有函数,如果有,外层函数的 this 就是内部箭头函数的 this,如果没有,则 this 指向 Window。

5. class 类(es6 严格模式)

6. vue 中的 this

一般来说,在 vue 生命周期函数或自定义方法中 this 指向的是 vue 实例,但是要注意下面的3种情况。


以上理解如果有不对之处请指出。

上一篇 下一篇

猜你喜欢

热点阅读