Вызов унаследованных методов

В других объектноориентированных языках программирования обычным явлением считается переопределение метода суперкласса в подклассе и вызов унаследованного метода суперкласса перед выполнением какихлибо операций, специфических для подкласса. Хоть и не всегда, но возникают ситуации, когда бывает необходимо вызывать метод базового класса, и подкласс реализует свое поведение на основе реализации базового класса. Любой класс, созданный с помощью dojo.declare, обладает доступом к специальному методу inherited, который вызывает соответствующий унаследованный метод суперкласса. (Обратите внимание, что унаследованные функции constructor вызываются автоматически и для этого не требуется обращаться к методу inherited.)

Пример 10.8. Вызов унаследованного метода суперкласса из метода подкласса
dojo.addOnLoad(function() {
dojo.declare("Foo", null, {
constructor : function() {
console.log("Foo constructor", arguments);
},
custom : function() {
console.log("Foo custom", arguments);
}
});
dojo.declare("Bar", Foo, {
constructor : function() {
console.log("Bar constructor", arguments);
},
custom : function() {
//автоматически вызывает метод 'custom' класса Foo
//и передает ему те же аргументы, хотя в случае необходимости
//над ними можно выполнить предварительные манипуляции
this.inherited(arguments);
//без этого вызова метод Foo.custom никогда не будет вызван
console.log("Bar custom", arguments);
}
});
var bar = new Bar(100);
bar.custom(4,8,15,16,23,42);
});

А ниже представлены соответствующие результаты в консоли Firebug:
Foo constructor [100]
Bar constructor [100]
Foo custom [4, 8, 15, 16, 23, 42]
Bar custom [4, 8, 15, 16, 23, 42].



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
JavaScript – это не Java
Имитация классов с использованием средств Dojo
Множественное наследование посредством смешивания классов
Наследование в JavaScript
Основной шаблон создания класса