gpt4 book ai didi

Javascript - 错误对象的名称和消息属性在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 06:07:18 26 4
gpt4 key购买 nike

试图理解为什么Javascript Error对象的两个跨浏览器属性,即“name”和“message”,不能使用“for ... in”方法找到

// error code
...
}catch( err ){

// in FF this lists 3 properties for fileName, lineNumber and columnNumber...
// but NOT name or message!
for(var propertyName in err) {
$( '#diags' ).append( 'err property: ' + propertyName + ',
value: ' + err[ propertyName ] + '<br>' );
}
// this line prints fine:
$( '#diags' ).append( 'Error - name:' + err.name + ', message: ' + err.message + '<br>' );
}

编辑

我被问到什么是名字和消息。这些是所有错误在任何浏览器中都具有的属性(尽管如此?)...所以在上面的代码中我添加了一行额外的代码来显示这些“属性”或它们打印得很好

编辑2

根据 Mati 的有用回答,我进行了一些搜索。这似乎回答了“检查”问题:Is it possible to get the non-enumerable inherited property names of an object?

最佳答案

A for...in loop不会迭代不可枚举的属性。

var e = new Error('a');

console.log(e.propertyIsEnumerable('name'));
console.log(e.propertyIsEnumerable('message'));
console.log(e.propertyIsEnumerable('fileName'));
console.log(e.propertyIsEnumerable('lineNumber'));
console.log(e.propertyIsEnumerable('columnNumber'));

for(var prop in e)
{
console.log(prop + ': ' + e[prop]);
}

输出

false
false
true
true
true
fileName: index.html
lineNumber: 25
columnNumber: 0

关于Javascript - 错误对象的名称和消息属性在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com