@PedroGarciyaLopez

Поясните пожалуйста, как здесь используется оператор new?

В документации marionette есть такой пример:
MyApp.addInitializer(function(options){
  new MyAppRouter();
  Backbone.history.start();
});

Не понимаю где в данном случае создается экземпляр MyAppRouter? Т.е. можно ли как-то получить на него ссылку? Если бы он был создан таким образом myApp.myAppRouter = new MyAppRouter(); то был бы доступен как свойство объекта myApp. А как в данном случае?
  • Вопрос задан
  • 2510 просмотров
Пригласить эксперта
Ответы на вопрос 3
aen
@aen
Keep calm and 'use strict';
Это просто прихоть автора документации. Этот пример взять из документации к Marionette.Application и он демонстрирует работу инициализаторов. Тут ссылка на сам роутер не нужна, потому экземпляр роутера создается таким образом.

Но даже этот код абсолютно рабочий, поскольку обычно в задачи роутера входит только реагирование на изменение роута. А биндинг этих изменений как раз и происходит при вызове конструктора.
Ответ написан
Комментировать
@dipwoodle
1. Человек написавший документацию не посчитал нужным, что объект роутера когда-либо понадобится, поэтому не записал в переменную.
2. Экземпляр MyAppRouter создается только в памяти.
3. Доступ к созданному объекту получить нельзя (по крайней мере публично).
4. В данном случае главная логика класса MyAppRouter содержится в конструкторе, поэтому никакой метод этого класса в будущем вызывать не нужно (по задумке автора).
5. А вообще это плохой пример, на практике так делать не хорошо.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Смотрите код MyAppRouter, скорее всего там ответ на ваш вопрос
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы