javaScript 箭头函数中this的使用
总结:
1.箭头函数没有this值,其使用的this来自作用域链,来自更高层函数的作用域。
2.普通函数有this值,指向context object(上文对象)
实例:
(1)箭头函数:
var circle = {
radius: 10,
outerDiameter() {
var innerDiameter = () => {
console.log(2 * this.radius);
};
innerDiameter();
}
};
circle.outerDiameter(); // 打印20
对于内层函数innerDiameter,它本身并没有this值,其使用的this来自作用域链,来自更高层函数的作用域。innerDiameter的外层函数outerDiameter是普通函数,它是有this值的,它的this值就是circle对象。因此,innerDiameter函数中所使用的this来自outerDiameter函数,其值为circle对象。
(2)普通函数:
var circle = {
radius: 10,
outerDiameter() {
var innerDiameter = function() {
console.log(2 * this.radius);
};
innerDiameter();
}
};
circle.outerDiameter(); // 打印NaN
innerDiameter函数中的this是window,为啥是window这个不去管它,总之不是circle。
3.还可以使用.bind(this)解决,参考:https://www.cnblogs.com/xxcn/p/11056495.html

浙公网安备 33010602011771号