【问题标题】:JS equivalent to PHP's new static()JS 相当于 PHP 的 new static()
【发布时间】:2018-01-31 07:27:24
【问题描述】:

我有一个抽象基类,它控制子类的大量繁重工作,我想添加一个静态工厂方法来满足对象,它的工作方式类似于 PHP 的 static 关键字。

我目前正在调用抽象类的静态方法,并传递给它一个子类类型的构造函数:Subclass.fromFile({}, Subclass),这太优雅了。

当前实施

class AbstractClass {
    //...

    static fromFile(attributes, constructor) {
        return new constructor(attributes)
    }

    //...
}

有没有相当于PHP的new static()的JS?

【问题讨论】:

标签: javascript php static


【解决方案1】:

答案几乎是微不足道的。显然 JS 将 this 作为调用者的 class 实例传递给静态方法。

因此,您可以在静态方法中使用new this(args) 实例化对象。

示例

abstract class AbstractClass {
    static fromFile(attributes) {
        console.log(this) // [LOG] class A {}
        return new this(attributes)
    }
}

class A extends AbstractClass {}

console.log(A.fromFile([])) // [LOG] A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 2012-10-10
    • 2016-03-24
    • 2011-08-21
    • 2011-04-30
    相关资源
    最近更新 更多