我在 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构造函数中定义,但我不太明白为什么它首先还没有设置。