【发布时间】:2018-07-23 17:16:59
【问题描述】:
Object.prototype.search = function() {
if (!(Array.isArray(this) || typeof this === 'object' || this === 'undefined')) {
throw {
number: 1,
err: 'test error'
}
}
var count = 0
for (item in this) {
if (typeof this[item] !== 'undefined' || (typeof this[item] !== 'string' && typeof this[item] !== 'number' ) ){
count++
}
}
return count - 1
}
array1 = ['x', , , 'x', , , 'x', 1, , , , , , 7, 8]
try {
console.log(array2.search())
}
catch (e) {
console.log('error ' + e.number)
}
是的,我知道 array2 不存在
返回“错误未定义” 类型检查不存在的 array2 对象不会触发抛出?
如何捕捉原型方法中的错误?
【问题讨论】:
-
当您提出问题时,文本区域右侧有一个橙色的大如何格式化框,其中包含有用的信息。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。 并且一个预览区域位于文本区域和发布您的问题按钮之间(这样您就必须滚动过去才能找到该按钮,以鼓励您查看它)显示您的帖子发布时的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。
-
这是您的第四个问题。您现在应该可以正确地进行格式化了。
-
单独:从不向
Object.prototype添加一个可枚举属性,array2.search()将抛出一个ReferenceError,因为array2是一个未声明的标识符。代码末尾还有一个额外的}。最后:for-in不是循环数组内容的正确方法。 -
@T.J.Crowder 你能告诉我为什么我的答案是错误的并给我投反对票吗?
-
如果 coder 没有理由那么请不要投反对票,如果你那么你必须给我们你投反对票的理由?
标签: javascript error-handling typechecking