Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在对象上设置的单个属性_Javascript_Class_Object_Javascript Objects - Fatal编程技术网

Javascript 在对象上设置的单个属性

Javascript 在对象上设置的单个属性,javascript,class,object,javascript-objects,Javascript,Class,Object,Javascript Objects,我有一个将错误设置为对象的类 其中一种方法是通过记录方法实现的 record(errors) { this.errors = errors; } 这将接受一个对象并设置值。通常我会得到这样的错误 但是我要做的是在对象中加入一个单独的错误 this.errors.record(this.errors.errors.username={username:“这是我的自定义错误”}) 但是,结果是整个对象被覆盖 如何更改此对象中的一个值?如果您的目标是将要传入的对象

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

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

  record(errors) {
        this.errors = errors;
      }
这将接受一个对象并设置值。通常我会得到这样的错误

但是我要做的是在对象中加入一个单独的错误

this.errors.record(this.errors.errors.username={username:“这是我的自定义错误”}

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

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

如果您的目标是将要传入的对象与已存在的对象合并,则可以使用:

record(errors) {
    Object.assign(this.errors, errors);
}
errors
的所有“自有”属性复制到预先存在的
this.errors
对象

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

record(errors) {
    this.errors = Object.assign(this.errors || {}, errors);
}
Object.assign
返回其第一个参数。当
this.errors
不存在时(很好,会导致任何错误值),将使用并返回新对象
{}
,然后将其分配给
this.errors
。但是当
this.errors
存在时(导致一个真实值),将使用该值,并且赋值是不可操作的



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

如果是
record
函数,则显示它本身的答案;传入的是设置为
this.errors
。感谢您的回答,我的自定义错误现在正在使用this.errors.record(this.errors.errors={username:[“this is my custom error”]});但是,其余的错误仍然会被清除。@LeBlaireau-是的,您不希望在其中包含作业。只是
this.errors.record({username:“…”})自然地,分配给
this.errors.errors
将覆盖以前的内容。感谢我现在遇到的问题是无法检查我知道有值控制台.log(this.errors.email)的属性的值//未定义