Вызов унаследованных методовВ других объектноориентированных языках программирования обычным явлением считается переопределение метода суперкласса в подклассе и вызов унаследованного метода суперкласса перед выполнением какихлибо операций, специфических для подкласса. Хоть и не всегда, но возникают ситуации, когда бывает необходимо вызывать метод базового класса, и подкласс реализует свое поведение на основе реализации базового класса. Любой класс, созданный с помощью 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]. Статьи из раздела Dojo на эту тему: ![]() ![]() ![]() ![]() ![]() Вернуться в раздел: Dojo / Имитация классов и наследование
|