不传播的原因是啥(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错误对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 C# 6.0 在使用 Null 传播运算符时不允许设置非 null 可空结构的属性?
为啥 C# 6.0 在使用 Null 传播运算符时不允许设置非 null 可空结构的属性?