什么是不传播的原因(ES 6传播运算符)javascript错误对象

时间:2018-11-06 06:54:25

标签: javascript node.js ecmascript-6

我正在尝试传播Javascript 错误对象(标准内置对象)。我正在获取空对象作为输出。

let error = new Error('error');
console.log({...error});

输出:

{}

不传播Error对象的原因是什么?

1 个答案:

答案 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});