不传播的原因是什么(es 6 spread operator)javascript错误对象 [英] What is the reason for not spread (es 6 spread operator) javascript Error object

查看:82
本文介绍了不传播的原因是什么(es 6 spread operator)javascript错误对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

输出:

  {} 

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

解决方案

这是因为在对象文字中传播语法将自己的可枚举属性从提供的对象复制到新对象



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



< pre class =snippet-code-js lang-js prettyprint-override> var error = new Error('error'); var props = Object.getOwnPropertyDescriptors(error); console.log(props) ; //这些都不是可枚举的



因此传播语法不会复制。如果它有一个可枚举的值,那么它就会复制它:



  var error = new Error('error'); error.foo ='bar'; console.log({... error});  


I'm trying to spread the Javascript Error object(Standard built-in objects). I'm getting the empty object as output.

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

output:

{}

What is the reason for not spreading the Error object?

解决方案

This is because the spread syntax in object literals "copies own enumerable properties from a provided object onto a new object".

None of the own properties of your Error object are enumerable.

var error = new Error('error');
var props = Object.getOwnPropertyDescriptors(error);
console.log(props); // none of these are enumerable

So the spread syntax copies nothing. If it had an enumerable value, then it would have copied it:

var error = new Error('error');
error.foo = 'bar';
console.log({...error});

这篇关于不传播的原因是什么(es 6 spread operator)javascript错误对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆