Javascript 为什么不是';t错误';Object.keys中包含的堆栈属性?

Javascript 为什么不是';t错误';Object.keys中包含的堆栈属性?,javascript,Javascript,env:nodejs 8.1.5,也在jscomplete上进行了测试,结果相同 const error = new Error("message"); const { message, ...rest } = error; const keys = Object.keys(error); const hasStack = error.hasOwnProperty("stack"); rest对象不包含堆栈属性,因为object.keys不返回该属性,并且“for in”不会拾取该属性。 然而

env:nodejs 8.1.5,也在jscomplete上进行了测试,结果相同

const error = new Error("message");
const { message, ...rest } = error;
const keys = Object.keys(error);
const hasStack = error.hasOwnProperty("stack");
rest对象不包含堆栈属性,因为object.keys不返回该属性,并且“for in”不会拾取该属性。 然而,它是error对象自己的属性(上面hasStack是真的)


有什么好处?我在文档或其上的polyfill中找不到关于此属性的任何特殊大小写,因为它不可枚举,因此它不会包含在
对象中。键或..的
迭代:

const error=新错误(“消息”);
//对于Chrome,它直接位于对象上:
log(Object.getOwnPropertyDescriptor(错误,'stack');
//对于Firefox,它是原型的一个亮点:

log(Object.getOwnPropertyDescriptor(Object.getPrototypeOf(错误),'stack')它不可枚举,因此它不会包含在
对象中。键
或一个
用于..在
迭代中:

const error=新错误(“消息”);
//对于Chrome,它直接位于对象上:
log(Object.getOwnPropertyDescriptor(错误,'stack');
//对于Firefox,它是原型的一个亮点:

log(Object.getOwnPropertyDescriptor(Object.getPrototypeOf(错误),'stack')
堆栈
已打开
错误。原型
不可枚举。同样的原因是,如果在数组中为…使用
lineno
colno
error
(对于正常抛出的错误,它们在
新错误
上看起来不存在)等错误属性都是原型的getter,但是,
消息
堆栈
不是,它们直接位于错误对象上……rest的typescript实现tslib在中使用,因此它不会破坏不可枚举的属性。很高兴知道
堆栈
打开了
错误。原型
不可枚举。同样的原因是,如果在数组中为…使用
lineno
colno
error
(对于正常抛出的错误,它们在
新错误
上看起来不存在)等错误属性都是原型的getter,但是,
消息
堆栈
不是,它们直接位于错误对象上……rest的typescript实现tslib在中使用,因此它不会破坏不可枚举的属性。很高兴知道