Я заметил странное поведение при определении настраиваемых объектов ошибок в Javascript:
function MyError(msg) {
Error.call(this, msg);
this.name = "MyError";
}
MyError.prototype.__proto__ = Error.prototype;
var error = new Error("message");
error.message; // "message"
var myError = new MyError("message");
myError instanceof Error; // true
myError.message; // "" !
Почему new Error("message")
устанавливает свойство message
, а Error.call(this, msg);
- нет? Конечно, я могу просто определить this.message = msg
в конструкторе MyError
, но я не совсем понимаю, почему он еще не установлен в первую очередь.