首页 > 解决方案 > 如何通过一个对象来修改一个类

问题描述

如果给定一个对象作为参数来修改创建的ExcelFile(使用Class),我如何通过该对象找到需要修改的参数,然后在ExcelFile?

例如,如果我打电话modify({date: 12/31/2020})给它,我希望它将日期更新为 2020 年 12 月 31 日,但是如果我给它, modify({date: '12/31/2020', duration: '60 minutes'})它会同时更新日期和持续时间。

我的想法在下面,但它没有确定日期......

class ExcelFile{
    constructor(arr){
        this.date = arr[0];
        this.duration = arr[1];
    }
    modify(obj){
        for (let key in obj) {
            if (obj[key] === "date") {
                 this.date = obj[date];
            }
        }
    }
}

标签: javascriptclassjavascript-objects

解决方案


如果您只需要修改ExcelFile实例的日期属性,那么您不需要迭代您发送给方法的对象,但您可以通过解构modify直接访问date参数的属性

class ExcelFile{
    constructor(arr){
        this.date = arr[0];
        this.duration = arr[1];
    }
    modify({date, duration}){
        this.date = date || this.date
        this.duration = duration || this.duration
    }
}

const file = new ExcelFile(["01/01/2020", "30 minutes"])
console.log(file)

file.modify({ date:"NEW DATE! 10/10/3000" })
console.log(file)

file.modify({ date:"foo", duration:"bar", unwanted:"baz" })
console.log(file)


推荐阅读