Javascript 使用匿名函数创建错误

Javascript 使用匿名函数创建错误,javascript,error-handling,anonymous-function,Javascript,Error Handling,Anonymous Function,可以通过以下方式在JavaScript中创建自定义错误: function err(message) { this.name = "MyError"; this.message = "Some message"; } err.prototype = Error.prototype; throw new err(); //(x) MyError: Some message 然而,我不太喜欢创建一次性使用的函数。因此,我尝试使用匿名函数创建一个错误: throw n

可以通过以下方式在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
(这是正确的,但浏览器没有显示我的自定义错误名称和消息。)


为什么会这样?如何修复它?

我得到了
我的错误:控制台中显示的某些消息
完全取决于您使用的浏览器,浏览器可以选择任何合适的格式。@p.s.w.g-但如果它们是相同的,为什么会导致不同的行为?@Derek朕會功夫 JavaScript中应该完全相同的数据结构在控制台上的显示可能会有所不同,这取决于几个因素,包括浏览器JS引擎的优化。有时,在不同的情况下,完全相同的代码有时会产生不同的控制台输出。我在Chrome上已经见过很多次了。基本上,除非你创建的代码专门针对单个浏览器(例如浏览器插件),否则你最好将控制台视为“魔法”,而不要对它的显示方式做出任何假设,或者尝试将代码定制为“控制台友好型”。毕竟,它不太可能在任何其他浏览器中以完全相同的方式运行,对于任何一个浏览器,这种行为都可能在下一次软件更新中发生变化。