|
Modus ponens
модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
|
Я пишу this всегда, тогда когда оно есть. Почему - у меня руки от этого не отвалятся, а в редких случаях это помогает избегать неочевидного поведения при наследовании и переопределении. Просто, по логике обычно хочется, чтобы, если явно не указано, методы использовали "родные" а не переопределенные копии. А по умолчанию получается наоборот.
Представте ситуацию: Классс EventDispatcher определил dispatchEvent "внучатый" класс его переопределил так, что он выбрасывает исключение, но внутри "ребенка" EventDispatcher'a были и другие функции, которые заввисели от использования dispatchEvent - так что после переопределения одной функции нарушилась работа и еще и остальных. Естесственно, все это произойдет если ребенок не использует super.
Вообще, переопределение зря так просто реализовано. С его помощью очень часто пытаются решить проблемы, которые лучше решать по-другому. Поэтому, я восновном пишу super, и редко this. this в том случае если явно подразумевается, что метод должен переопределятся в ребенке (аналог virtual).
Еще такой момент. this это не ключевое слово, это переменная, просто компилятор сам заполняет значение этой переменной. Ключевое слово, это, например, for, var и т.д. - т.е. это не "идентификатор".
Вы можете мысленно внутри каждого метода класса просто представлять, что вместо вас компилятор дописывает: var this:ThisClass = {ссылка на объект, которому "принадлежит" метод}.
__________________
Hell is the possibility of sanity
|