javaScript 箭头函数中this的使用

参考资料:https://www.cnblogs.com/xxcn/p/11056495.html

 总结:

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

 

 

 

posted @ 2022-12-06 22:20  轻风细雨_林木木  阅读(39)  评论(0)    收藏  举报