【问题标题】:What is the reason for not spread (es 6 spread operator) javascript Error object [duplicate]不传播的原因是什么(es 6传播运算符)javascript错误对象[重复]
【发布时间】:2018-08-12 17:00:37
【问题描述】:

我正在尝试传播 Javascript Error 对象(标准内置对象)。我将空对象作为输出。

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

输出:

{}

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

【问题讨论】:

标签: javascript node.js ecmascript-6


【解决方案1】:

这是因为spread syntax in object literals将自己的可枚举属性从提供的对象复制到新对象上”。

您的错误对象的自己的属性都不是可枚举的

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

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2015-11-28
    相关资源
    最近更新 更多