gpt4 book ai didi

Javascript Array.prototype.find 第二个参数 thisArg 不起作用

转载 作者:行者123 更新时间:2023-12-01 02:57:24 26 4
gpt4 key购买 nike

我正在阅读一本 JavaScript 书籍,发现了有关如何使用 arr.find(callback[, thisArg]) 的代码

class Person {
constructor(name) {
this.name = name;
this.id = Person.nextId++;
}
}

Person.nextId = 0;

const jamie = new Person("Jamie"),
juliet = new Person("Juliet"),
peter = new Person("Peter"),
jay = new Person("Jay");
const arr = [jamie, juliet, peter, jay];

// option 2: using "this" arg:
arr.find(p => p.id === this.id, juliet); // returns juliet object

我无法得到想要的结果。每次 find() 返回 undefined

最佳答案

您正在使用arrow函数,它保留词法作用域。箭头函数内的 this 变量代表 window,而不是您传递的 juliet 参数。

要纠正此问题,您只需使用 function 创建新作用域并将 juliet 作为 this 传递即可。

class Person {
constructor(name) {
this.name = name;
this.id = Person.nextId++;
}
}

Person.nextId = 0;

const jamie = new Person("Jamie"),
juliet = new Person("Juliet"),
peter = new Person("Peter"),
jay = new Person("Jay");
const arr = [jamie, juliet, peter, jay];

// option 2: using "this" arg:
let a = arr.find(function(p) {
return p.id === this.id;
}, juliet);

console.log(a);

关于Javascript Array.prototype.find 第二个参数 thisArg 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46639131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com