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, время: 09:38. |