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)的属性的值//未定义