相关疑难解决方法(0)

抛出错误('msg')vs抛出新错误('msg')

var err1 = Error('message');
var err2 = new Error('message');
Run Code Online (Sandbox Code Playgroud)

有什么不同?在Chrome控制台中查看它们,它们看起来完全相同.对象和同一__proto__链上的相同属性.几乎看起来像Error一个工厂.

哪一个是正确的,为什么?

javascript exception

150
推荐指数
2
解决办法
2万
查看次数

ES6:没有new关键字的调用类构造函数

给出一个简单的类

class Foo {
  constructor(x) {
    if (!(this instanceof Foo)) return new Foo(x);
    this.x = x;
  }
  hello() {
    return `hello ${this.x}`;
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在没有new关键字的情况下调用类构造函数?

用法应该允许

(new Foo("world")).hello(); // "hello world"
Run Code Online (Sandbox Code Playgroud)

要么

Foo("world").hello();       // "hello world"
Run Code Online (Sandbox Code Playgroud)

但后者失败了

Cannot call a class as a function
Run Code Online (Sandbox Code Playgroud)

javascript constructor instance ecmascript-6

71
推荐指数
7
解决办法
6万
查看次数