Ответ 1
Второй и третий фрагменты функционально эквивалентны. callParent
- это просто более простой и простой способ вызвать родительскую функцию вместо перехода через свойство superclass
.
Первый пример совершенно другой. Во-первых, он не вызывает родительский конструктор. Это, как правило, плохая новость. Базовый класс обычно имеет некоторую инициализацию, которую нужно выполнить, и забыть вызвать родителя для конструктора (и initComponent) является общим источником ошибок.
initConfig
- метод удобства, который будет:
- объединить исходную конфигурацию вашего объекта с конфигурацией, которая передается в
- создать getters и seters для всех свойств в config
- применить конфигурацию к объекту
Это полностью отличается от вызова родительского конструктора. То, что вызывает родительский конструктор, полностью зависит от того, что он написал. Некоторые будут использовать initConfig
, некоторые не будут, а другие будут делать то же, что и initConfig, но вручную.
Не нужно использовать initConfig
, и это даже опасно время от времени. Но эта другая история вообще (для Ext 4.1, initConfig выглядит надежно безвредным и не содержит тех же опасных побочных эффектов, что и в 4.0)
Боковое примечание
Просто чтобы указать. Во втором и третьем фрагментах конструктор не нужен. Если ваш конструктор вызывает только родительский конструктор, вы можете полностью оставить свой конструктор.