Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.04.2011, 20:41
Интересующийся
Отправить личное сообщение для see613 Посмотреть профиль Найти все сообщения от see613
 
Регистрация: 20.04.2011
Сообщений: 24

JQuery наследование виджета
Помогите. Требуется унаследовать datepicker (любой виджет). При этом чтобы при расширении метода можно было не переписывать весь его код заного, а вызвать конструктор (или в яваскрипте наверно метод прототипа), после чего дописать новый код. Наверное все же лучше сказать расширить класс, а не унаследовать, ведь в итоге должен получиться класс datepicker (и называться datepicker), расширенный новыми методами. Знание яваскрипта - так себе, читал об этом - упорно, осилить - не смог.
Прошу помощи специалистов.
Ответить с цитированием
  #2 (permalink)  
Старый 21.04.2011, 12:07
Интересующийся
Отправить личное сообщение для see613 Посмотреть профиль Найти все сообщения от see613
 
Регистрация: 20.04.2011
Сообщений: 24

имется вот такая штука:

(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 вместо него, выдает зацикливание, так как получается, мы вызываем внутри метода этот же метод этого же класса (кажется так). Может специалист заглянет на огонёк и поможет в этой х$%&рне?
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2011, 09:14
Интересующийся
Отправить личное сообщение для see613 Посмотреть профиль Найти все сообщения от see613
 
Регистрация: 20.04.2011
Сообщений: 24

полковнику никто ... не пишет ...
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2011, 10:36
Интересующийся
Отправить личное сообщение для see613 Посмотреть профиль Найти все сообщения от see613
 
Регистрация: 20.04.2011
Сообщений: 24

В итоге методом усиленного тыка получилась вот такая хрень, которая, как не странно работает:

(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). Поэтому может кто-нить сможет наити и подсказать что здесь не так?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамически загружаемая jQuery и jQuery-функции в одном файле 67bytes Общие вопросы Javascript 6 06.03.2013 09:01
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29
jQuery object в xpath. Глобальные события solarix jQuery 1 29.10.2010 16:40
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16