javascript中this的指向一直是前端同事有时会不理解的知识点,也会出现在面试题中,今天我们将来总结下this的指向问题:
注释:
1.全局变量默认挂载在window对象下,一般情况下this指向它的调用者
2.es6的箭头函数中,this指向创建者,并非调用者
举个例子:
一.函数调用时:
非严格模式:默认挂载在window对象下,this指向它的调用者即window,所以输出window对象
const func = function () {
console.log(this);
const func2 = function () {
console.log(this);
};
func2(); //Window
};
func(); //Window
严格模式:this不允许指向全局变量window,所以输出为undefined(func2在函数直接调用时默认指向了全局window
'use strict'
const func = function () {
console.log(this);
const func2 = function () {
console.log(this);
};
func2(); //undefined
};
func(); //undefined
**
解决方法:正确的设计方式是内部函数的this 应该绑定到其外层函数对应的对象上,为了规避这种缺陷,js出了变量替代的方法