javascript - ES6 类 - 映射变量数组

标签 javascript arrays oop es6-class

假设我有一个包含 5 个人名的列表

让 listNames = [Sam、Ash、Moe、Billy、Kenzi]

并且我希望每个名称都具有 doneHomeWorklazy using class 的属性

class Person {
    constructor() {
        this.doneHomeWork = 0
        this.lazy = false
    }
}

而不是这样分配每个名称:

const Sam = new Person()
const Ash = new Person()
const Moe = new Person()
const Billy = new Person()
const Kenzi = new Person()

我想做这个

listNames.forEach(name => {
    name = new Person()
})

但是,在我的 ESLint 中它给我一个错误

Assignment to function parameter 'name' no-param-reassign

这看起来微不足道,但出于某种原因,我无法重构它。

最佳答案

问题是名称变量是用于在循环内循环的变量。 您正在循环的第一次迭代中更改此值。这就是您的错误 Assignment to function parameter 'name' no-param-reassign 的原因。

然后您尝试使用动态名称作为变量名称。如果你想这样做,方法是使用括号表示法,所以你可以这样做:

class Person {
    constructor() {
        this.doneHomeWork = 0
        this.lazy = false
    }
}
let persons = [];
let listNames = ['Sam', 'Ash', 'Moe', 'Billy', 'Kenzi'];

correctListNames.forEach(name => {
    persons[name] = new Person()
})

console.log(persons);

关于javascript - ES6 类 - 映射变量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43744785/

相关文章:

javascript - 我想在提交之前制作一个复选框来编辑多文件上传输入字段的选定文件

python - 获取轴上 numpy.argmax 元素的索引

java - Java中 float 组列表到 float 组的列表

java - 如何从一组对象生成组合?

python - OOP实例更新

c++ - 除了类(class)以外的所有人都是常数,有这样的事情吗?

javascript - sinon.replace vs sinon.stub 只是为了替换返回值?

javascript - React event.target 不是我设置事件监听器的元素

javascript - ASP.NET MVC 复选框上的灰色字段 = true

arrays - 在 Swift 中创建具有两种变量类型的二维数组数组