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不存在
返回'错误未定义' Typechecking不存在的array2对象不会触发throw?
如何在原型方法中捕获错误?
答案 0 :(得分:0)
您应该将array2替换为array1。
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) {
count++
}
}
return count - 1
}
array1 = ['x', , , 'x', , , 'x', 1, , , , , , 7, 8];
try {
console.log(array1.search());
} catch (e) {
console.log('error ' + e.number)
}
答案 1 :(得分:0)
它返回error undefined
,因为您正在创建一个名为array1
的数组,但在名为search
的未定义变量上使用您的array2
函数。