![]() |
Можно ли вызвать повторно конструктор?
Есть класс:
Код AS3:
Если можно, то это чему-нибудь противоречит, ну там в плане безопасности и вообще? |
2 i.o.:
А зачем? о_0 Э... Противоречит, я думаю. Это как человеку родиться дважды, что противоречит божественному плану. |
Просто стало интересно (с геттером и сеттером подобное работает) и сделал такой тест: Код AS3:
Код AS3:
Ведь если бы это создавался новый экземпляр, то никак бы не мог вызываться колбак onTest. Следовательно действительно получается вызвать повторно конструктор. Поправьте, если не прав. |
2 i.o.:
Ну, конструктор - это функция, которая вызывается после создания экземпляра класса. В ней обычно происходит инициализация чего-нибудь. Членов класса, например. Только вызывать конструктор несколько раз... как-то странно что ли... Да и ни к чему. Можно просто описать какую-нибудь публичную функцию init и выполнять её в конструкторе и так, как метод класса, без сохранения ссылок на конструктор. |
Все бы ничего, да вот только super() можно вызывать только в конструкторе. Да и по задумке похоже, что это делать нужно только один раз, а тут выходит, что вызывай сколько влезет. Это баг или так и задумано?
|
баг конечно.
|
BlooDHounD, прокомментируйте, почему баг? Чему противоречит?
Если про то, что конструктор вызывается только один раз: с другой стороны он такая же функция... А так, пока что, сомнения между "баг" и "изящная реинициализация, хоть и не безопасная" )) |
а мне понравился аналог про родиться дважды...
|
так называемое "Рождение" происходит при использовании оператора new. А в конструкторе идет инициализация переменных и суперкласса. Конструктор всего лишь функция. Так что где вы тут повторное "рождение" разглядели мне неясно.
Вопрос то в другом: считать ли это багом и почему? |
| Часовой пояс GMT +4, время: 17:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.