可以通过以下方式在JavaScript中创建自定义错误:
function err(message) {
this.name = "MyError";
this.message = "Some message";
}
err.prototype = Error.prototype;
throw new err(); //(x) MyError: Some message
然而,我并不是创建一次性使用功能的忠实粉丝。所以我尝试使用匿名函数创建错误:
throw new (function(){
this.name = "MyError";
this.message = "Some message";
arguments.callee.prototype = Error.prototype;
})(); //(x) [object Object]
它们两者基本相同。但是,此代码生成的错误消息看起来像[object Object]
,其中包含message
和name
键(这是正确的,但浏览器不显示我的自定义错误名称和消息。 )
为什么会这样?我该如何解决?