如何获取 javascript 错误的原型(prototype)成员对象键?
当我捕获错误时,我遇到了这个问题,我不知道控制台输出是否会因为错误类/类型/....的特殊情况而表现出这种方式。
try {
throw new Error('sample error')
} catch (ex) {
console.log(ex instanceof Error)
//true
console.log(ex.message)
//sample error
console.log(Object.keys(ex))
//[] fine as i suppose the class/type members exist in prototype
console.log(ex.__proto__)
//{name:'error', message:'', constructor:.... i suppose these are the default properties of Error
console.log(Object.keys(ex.__proto__))
//[] how come empty array still???
}
我想这是最后一句话console.log(Object.keys(ex.__proto__))
应该返回['名称','消息'...]。只是想知道我做错了什么。
最佳答案
由于某种原因,name
和 message
属性在 Error.prototype
上无法枚举。但是您可以使用Object.getOwnPropertyNames
来获取属性列表,包括可枚举的和不可枚举的:
try {
throw new Error('sample error')
} catch (ex) {
console.log(Object.getOwnPropertyNames(ex.__proto__));
}
Object.keys
将返回一个仅包含可枚举(和自己的)属性的数组。
请注意,__proto__
已弃用。最好使用 Object.getPrototypeOf
代替:
try {
throw new Error('sample error')
} catch (ex) {
console.log(Object.getOwnPropertyNames(Object.getPrototypeOf(ex)));
}
关于javascript - 如何获取 javascript 错误的原型(prototype)成员对象键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59463733/