通过调用方法创建 class 的实例,不使用 new 关键字

Create instance of class by calling method, without new keyword

我想通过从另一个 class (Abc.CallingClass) 调用函数 Abc.MainClass.callMainClass() 来创建 Abc.MainClass 的新对象。我不想在那里使用 new 关键字。

这里是 Abc.MainClass:

goog.provide('Abc.MainClass');

Abc.MainClass.callMainClass = function() {
    var config = null;
    return new Abc.MainClass(config);
}

Abc.MainClass= function(config) {
}

这是Abc.CallingClass:

goog.require('Abc.MainClass');

this.mainClass = Abc.MainClass.callMainClass;
this.mainClass();

当然不行。你知道为什么错了吗?我应该如何实现这样的东西?

实际上您的实施顺序不正确。更新如下。

Abc.MainClass = function(config) {

}

Abc.MainClass.callMainClass = function() {
    var config = null;
    return new Abc.MainClass(config);
}