在对象上设置的单个属性

时间:2018-07-25 15:23:53

标签: javascript class object javascript-objects

我有一个将错误设置为对象的类

其中一种方法是通过记录方法实现的

  record(errors) {
        this.errors = errors;
      }

这将接受一个对象并设置值。通常我会得到这样的错误

enter image description here

但是我试图将单个错误放入对象中

this.errors.record(this.errors.errors.username = {username: "this is my custom error"});

但是结果是整个对象被覆盖

enter image description here

如何更改此对象中的一个值?

1 个答案:

答案 0 :(得分:1)

如果您的目标是将要传递的对象与已经存在的对象合并,则可以使用Object.assign来做到这一点:

record(errors) {
    Object.assign(this.errors, errors);
}

这会将errors的所有“自有”属性复制到预先存在的this.errors对象中。

如果this.errors可能不存在,则可以添加保护和分配:

record(errors) {
    this.errors = Object.assign(this.errors || {}, errors);
}

Object.assign返回其第一个参数。当this.errors不存在时(会导致任何伪造的值),将使用并返回新对象{},然后将其分配给this.errors。但是,当this.errors存在时(得出真实值),将使用该值并且该分配为无操作。


Object.assign是最近才添加的,但是对于较旧的环境来说,对于polyfill来说是微不足道的。