前言
JS基础解析系列, 主要是为了弄清楚JS中一些常见但容易出错,不常见但有助于理解代码的要点。不定时更新,请多多见谅。
this
this是JS中绕不过的要点,方方面面都和其相关。在技术的变迁中,this的疑问也有各种各种的变化。下面就将按照不同的背景,讲述下this的指向问题。
在ES2015之前
在ES6之前, 最常用的包还是jQuery的时代. 主流的方式是通过构造函数,模拟面向对象来编写代码.
常见用法如下:
1 | // 不指定 |
在ES2015之后
ES6中引入了箭头函数(=>), 增加了一种this的使用方法. 配合上Vue, React等框架,降低了前端开发的难度,使得前端可以更加的专注于业务.
常见的用法如下:
1 | // 箭头函数 |
特殊调用
在JS中, 为了提高代码的效率, 提供了几个可以改变this指向的函数call, apply和bind. 虽然和本文介绍this指向的关系不大, 但稍微提及下.
常见的调用方式如下:
1 | // call & apply |
总结
this在JS中指向当前的上下文环境(context), 指向取决于包含它的函数的调用位置.
实际使用中, 如何确定当前的上下文环境并不是一件容易的事情. 除了常见的点操作符(.)和中括号操作符([])等在代码中显示的绑定指向外,比较麻烦的是在方法中(function)声明的this, 在执行时才能确定this指向的隐式绑定.