不传播的原因是啥(es 6传播运算符)javascript错误对象[重复]

Posted

技术标签:

【中文标题】不传播的原因是啥(es 6传播运算符)javascript错误对象[重复]【英文标题】: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对象没有传播的原因是什么?

【问题讨论】:

预期输出是什么? 不敢相信我找不到骗子。如果有人有,请告诉我。 Spread syntax readout : Only for iterables. @Kaiido 你可能还记得meta.***.com/q/370046/1048572? @Bergi,不,我没有特别记得一个问题,只是发现不太可能还没有被问过(实际上I saw one already,但即便如此也没有回答思考一定是骗子,当时我可能没有时间搜索)。 【参考方案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);

【讨论】:

以上是关于不传播的原因是啥(es 6传播运算符)javascript错误对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript ES6 - 在函数中传播运算符

为啥 C# 6.0 在使用 Null 传播运算符时不允许设置非 null 可空结构的属性?

为啥 C# 6.0 在使用 Null 传播运算符时不允许设置非 null 可空结构的属性?

使用webpack.config和babelrc文件传播对象

神经网络中的单位是啥(反向传播算法)

传播运算符不工作 ...this.state.attributes