关于数组方法'thisArg'的困惑

问题描述 投票:0回答:1

我正在学习数组方法,有一件事我不太了解,可能与闭包有关。

首先,这是代码段:

let range = {
    minNumber: 20,
    maxNumber: 30,
    isValid(number) {
        return number >= this.minNumber && number < this.maxNumber;
    }
};
    
let numbers = [16, 23, 27,  30, 45];
    
let filteredNumbers = numbers.filter(range.isValid, range);
    
console.log(filteredNumbers.length); // 2
console.log(filteredNumbers[0]); // 23
console.log(filteredNumbers[1]); // 27

根据我的理解,通过传递第二个参数,我们将this绑定到range,否则只需调用:numbers.filter(range.isValid)将使this不确定。但是,由于我们正在使用this运算符从isValid上下文中“调用” range,因此它不应该以任何方式访问.吗?

还有另一种可行的方法:

numbers.filter(number => range.isValid(number))

这里发生了什么?现在可以突然从this对象中拾取range吗?箭头函数没有this iirc,所以不是。

感谢您事先提供的所有帮助。 :)

javascript this
1个回答
0
投票

我的理解是,当您打电话时

© www.soinside.com 2019 - 2024. All rights reserved.