同样的函数,仅仅采用了箭头函数来声明,this的指向却完全不一样了?
结论先行:箭头函数的this指向不同于一般的function函数——箭头函数的this是在定义时绑定,而一般的function是在调用时绑定。
举例:
调用
结果
分析:
- new test1()先构造了test1()对象,因此第一行的this指向test1对象,所以声明箭头函数时,也自动将其上下文环境绑定到了test1。
- 直接调用函数,函数的上下文环境为window,箭头函数的上下文环境也随之绑定到window。
- 在test2、test3内部定义的函数b和c,上下文环境与外层函数不相关(函数执行时上下文是window),若要使用外层函数环境,需要定义var that = this。
参考:https://blog.csdn.net/u012149906/article/details/90266482