我正在尝试传播Javascript 错误对象(标准内置对象)。我正在获取空对象作为输出。
let error = new Error('error');
console.log({...error});
输出:
{}
不传播Error对象的原因是什么?
答案 0 :(得分:2)
这是因为spread syntax in object literals“ 将自己的可枚举属性从提供的对象复制到新对象”。
Error对象的所有属性都不是可枚举的。
var error = new Error('error');
var props = Object.getOwnPropertyDescriptors(error);
console.log(props); // none of these are enumerable
因此,传播语法不会复制任何内容。如果它具有可枚举的值,那么它将复制它:
var error = new Error('error');
error.foo = 'bar';
console.log({...error});