相关疑难解决方法(0)

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万
查看次数

在Typescript声明文件中的工厂函数,包含和不包含new关键字

以下代码将在ES5中创建工厂函数:

function MyClass(val) {
    if (!(this instanceof MyClass)) {
        return new MyClass(val);
    }

    this.val = val;
}
Run Code Online (Sandbox Code Playgroud)

可以使用或不使用new关键字调用此函数:

var a = new MyClass(5);
var b = MyClass(5);
Run Code Online (Sandbox Code Playgroud)

这在Typescript中运行良好,但我无法弄清楚如何使用描述两种行为的合并来创建声明文件.有没有办法做到这一点?

javascript ecmascript-5 typescript

8
推荐指数
1
解决办法
351
查看次数

在TypeScript中,可以在没有"new"关键字的情况下使用类吗?

TypeScript是包含类型的ES6 Javascript的超集.可以使用class关键字声明一个类,并使用关键字实例化new它们,就像它们在Java中一样.

我想知道在TypeScript中是否有任何用例可以在不使用new关键字的情况下实例化类.

我问的原因是因为我想知道是否假设我有一个被调用的类Bob,我可以假设任何实例都Bob被实例化了new Bob().

typescript

6
推荐指数
2
解决办法
4142
查看次数