var err1 = Error('message');
var err2 = new Error('message');
有什么不同?在chrome控制台中,它们看起来一模一样。对象上相同的属性和相同的__proto__链。几乎看起来错误就像一个工厂。
哪个是正确的,为什么?
var err1 = Error('message');
var err2 = new Error('message');
有什么不同?在chrome控制台中,它们看起来一模一样。对象上相同的属性和相同的__proto__链。几乎看起来错误就像一个工厂。
哪个是正确的,为什么?
Error确实像一个工厂一样,就像其他一些本地构造函数:Array, Object等都检查类似if (!(this instanceof Array)){返回新数组(参数);}。(但请注意,String(x)和new String(x)非常不同,Number和Boolean也是如此。)
也就是说,如果出现错误,甚至不需要抛出一个error对象……抛出“糟糕的事情发生了”;你甚至可以抛出一个对象文字来调试:
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};