JQuery наследование виджета
Помогите. Требуется унаследовать datepicker (любой виджет). При этом чтобы при расширении метода можно было не переписывать весь его код заного, а вызвать конструктор (или в яваскрипте наверно метод прототипа), после чего дописать новый код. Наверное все же лучше сказать расширить класс, а не унаследовать, ведь в итоге должен получиться класс datepicker (и называться datepicker), расширенный новыми методами. Знание яваскрипта - так себе, читал об этом - упорно, осилить - не смог.
Прошу помощи специалистов. |
имется вот такая штука:
(function($, undefined){ // переменные, без которых не работает (просто скопированы из datepickera) var PROP_NAME = 'datepicker'; var dpuuid = new Date().getTime(); /* ------------------- */ var MyDatePicker = { // метод который есть в самом datepickere, его надо унаследовать _generateHTML: function(inst) { /* проблемная строка */ var html = $.datepicker.__proto__._generateHTML.call(this, inst); /* ------------------- */ return html + 'мой текст'; }, }; $.extend($.datepicker, MyDatePicker ); })(jQuery); работает невезде изза наличия __proto__, а если поставить prototype вместо него, выдает зацикливание, так как получается, мы вызываем внутри метода этот же метод этого же класса (кажется так). Может специалист заглянет на огонёк и поможет в этой х$%&рне? |
полковнику никто ... не пишет ...
|
В итоге методом усиленного тыка получилась вот такая хрень, которая, как не странно работает:
(function($, undefined){ var myDatePicker = { _generateHTML: function(inst) { var html = $.datepicker.constructor.prototype._generateHTML.call(this, inst); return html + 'мой текст'; }, }; $.extend($.datepicker, myDatePicker ); })(jQuery); Но модератор форума linkexchanger.su написал, что сделать такое не получится (а мне кажется модератором на форуме програмистов просто так не становятся), остается 2 варианта: 1) модератор ошибся (есть вероятность, ведь все мы люди); 2) в моем решении есть косяк или подводный камень(вероятность 99% по сравнению с 1% варианта №1). Поэтому может кто-нить сможет наити и подсказать что здесь не так? |
Часовой пояс GMT +3, время: 19:47. |