Я пытался делать некоторые простой тип проверки на наличие ошибок, и имел следующий код:isPrototypeOf говорит «нет», но instanceof говорит «да» - что происходит?
function isError(x) {
return Error.isPrototypeOf(x)
}
Однако, если я вызываю функцию с экземпляром ошибки, я получаю false
, например, так:
isError(new RangeError) // false
Так я разжег узел (ну, во всяком случае io.js), и сделал следующее:
> Object.getPrototypeOf(Object.getPrototypeOf(new RangeError))
[Error]
в конце концов, если я делаю CHEC к с instanceof
, он работает, как так:
> (new RangeError) instanceof Error
true
Итак, что же здесь происходит?
Действительно ли 'RangeError.prototype' является экземпляром 'Error'? –
@KubaWyrostek Да, я верю, что это так. Если вы знаете лучше, пожалуйста, дайте мне знать. – Ben
Я не знаю лучше. Я просто спросил. :-) Не правда ли, что это 'RangeError.prototype = Object.create (Error.prototype)', а не 'RangeError.prototype = new Error()'? –