mik*_*ent 5 javascript error-handling jquery
试图理解为什么使用"for ... in"方法无法找到Javascript Error对象的两个跨浏览器属性,即"name"和"message"
// 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>' );
}
Run Code Online (Sandbox Code Playgroud)
编辑
我被问到名称和信息是什么.这些性质(是他们有关系吗?),这所有的错误在任何浏览器...所以在上面的代码中,我添加了一个额外的代码行这表明这些"属性"或不管他们是印刷精美
EDIT2
按照Mati的回答,我做了一些搜索.这似乎回答了"检查"问题:是否有可能获得对象的不可枚举的继承属性名称?
一个for ... in循环不随非枚举的属性进行迭代.
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]);
}
Run Code Online (Sandbox Code Playgroud)
产量
false
false
true
true
true
fileName: index.html
lineNumber: 25
columnNumber: 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4044 次 |
| 最近记录: |