Есть коллекция исключений, наследующая прототип конструктора Error, нужно как-то проверять брошенное исключение, что оно является непосредственным потомком исключения.
Попытка проверки с помощью instanceof даёт в обоих результатах: true, как я понял — это потому, что они оба наследуют прототип Error-а:
var err = new object.exceptions.IncorrectLink();
console.log(err instanceof object.exceptions.IncorrectLink); // true
console.log(err instanceof object.exceptions.Timeout); // true
Список исключений:
var object = { exceptions: {} };
object.exceptions.IncorrectLink =
function IncorrectLink(message, type) {
Error.call(this);
this.name = 'IncorrectLink';
if (message) {
this.message = message;
} else {
this.message = 'Incorrect "link" argument';
if (type) this.message += ' ("'+ type +'")';
this.message += ', must be a "string"';
}
};
object.exceptions.Timeout =
function Timeout(message) {
Error.call(this);
this.name = 'Timeout';
this.message = message || 'Loading timeout';
};
for (var key in object.exceptions) {
object.exceptions[key].prototype = Error.prototype;
}