Создать экземпляр класса, вызвав метод, без нового ключевого слова

1

Я хочу создать новый объект Abc.MainClass, вызывая функцию Abc.MainClass.callMainClass() из другого класса (Abc.CallingClass). Я не хочу использовать новое ключевое слово.

Вот 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();

Конечно, это не сработает. Вы знаете, почему это неправильно? Как мне реализовать такую вещь?

  • 0
    Вы пробовали Object.create (имя класса)
  • 0
    Я не уверен, будет ли это делать то, что я хочу. Я хочу иметь несколько разных методов, таких как callMainClass, для создания объектов MainClass с разными параметрами.
Показать ещё 5 комментариев
Теги:
new-operator

1 ответ

2
Лучший ответ

На самом деле последовательность вашей реализации неверна. Обновите его, как показано ниже.

Abc.MainClass = function(config) {

}

Abc.MainClass.callMainClass = function() {
    var config = null;
    return new Abc.MainClass(config);
}
  • 0
    Наконец то работает !!!! не могу поверить в это. Я бы никогда этого не заметил и не знал, что последовательность важна в JS. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню