这是我在公众号 (高级前端进阶) 看到的文章, 现在做笔记
https://github.com/yygmind/blog/issues/21
上篇文章详细的分析了各种 this 的情况, 看过之后对 this 的概念就很清晰了, 没看过的去看看.
我们知道 this 绑定规则一共有 5 种情况:
1, 默认绑定(严格 / 非严格模式)
2, 隐式绑定
3, 显式绑定
4,new 绑定
5, 箭头函数绑定
其实大部分情况下可以用一句话来概括, this 总是指向调用该函数的对象.
但是对于箭头函数并不是这样, 是根据外层 (函数或者全局) 作用域 (词法作用域) 来决定 this.
对于箭头函数的 this 总结如下:
箭头函数不绑定 this, 箭头函数中的 this 相当于普通变量.
箭头函数的 this 寻值行为与普通变量相同, 在作用域中逐级寻找.
箭头函数的 this 无法通过 bind,call,apply 来直接修改(可以间接修改).
改变作用域中 this 的指向可以改变箭头函数的 this.
eg. function closure(){()=>{//code }}, 在此例中, 我们通过改变封包环境 closure.bind(another)(), 来改变箭头函数 this 的指向.
题目 1
来源: http://www.bubuko.com/infodetail-2883585.html