我想在我的JS代码中抛出一些东西,我希望它们是instanceof Error,但我也想让它们成为别的东西.
在Python中,通常会有一个子类Exception.
在JS中做什么是合适的?
我在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; // "" !
Run Code Online (Sandbox Code Playgroud)
为什么new Error("message")设置message属性,而Error.call(this, msg);不是?当然,我可以this.message = msg在MyError构造函数中定义,但我不太明白为什么它还没有设置在第一位.