2010-04-08 5 views
0

Я довольно новичок в javascript, но поставил задачу лучше познакомиться с ней. Тем не менее, я сталкиваюсь с некоторыми проблемами с jQuery. Следующий javascript - это код, который находится в стороннем плагине jQuery, и мне было бы интересно переопределить функцию funFunction() здесь, чтобы выполнить мою собственную реализацию. Возможно ли это, если да, то как я могу это сделать? Я делаю изрядное количество поисков и испробовал ряд методов для переопределения функции, используя такие вещи, как:Переопределение глубинных функций в javascript

jQuery.blah.funFunction = function() { alert("like this"); }; 

Главного код:

(function($) { 
    $.extend({ 
     blah: new function() { 
      this.construct = = function(settings) { 
       //Construct... stuff 
      }; 
      function funFunction() { 
      //Function I want to override 
      } 
     } 
    }); 
})(jQuery); 

Для тех, кто заинтересован в дальнейшем я пытаюсь переопределить tablesorter так, чтобы единственный способ сортировки столбца был только в порядке возрастания.

Edit:

Существует WordPress установка, которая использует WP-Table-Reloaded, который в свою очередь, использует этот плагин. Я не хочу менять основной код для этого плагина, потому что, если бы было когда-либо обновление, я должен был бы убедиться, что мой предшественник точно знал, что я сделал.

Я программировал в течение долгого времени и чувствую, что я должен легко получить javascript, а также посмотреть на jQuery. Я точно знаю, что мне нужно сделать для этого, просто не могу переопределить эту функцию.

+1

Просто мысль: jQuery - это не путь, если вы хотите познакомиться с Javascript. Сначала попробуйте чистый Javascript. – Abbas

+0

Вы не можете переопределить это ... это локальная переменная и доступна только в пределах области, где она была определена (и в любом закрытии). – James

+0

Я предлагаю особое мнение - если вы знакомы с программированием в целом, вы должны одновременно изучить Javascript и jQuery, если будете придерживаться понятий. Просто помните, что jQuery * является * Javascript, и что он использует гибкость языка для предоставления инструментов и функциональности. – Pointy

ответ

2

Хорошая вещь о JQuery является то, что если плагин не совсем то, что вы хотите, вы можете

  • Посмотрите на другой плагин, который делает то же самое;
  • Возьмите плагин, и если это GPL просто исправить

Мой опыт показывает, что большинство плагинов довольно хорошо, но они написаны не божествами, так что иногда возникают проблемы или иногда то, что вам нужно просто бывает чтобы спросить, что ожидал дизайнер.

В настоящее время: вы действительно должны серьезно подумать о том, что вы хотите делать и каковы ваши потребности, а также как новичок, какие предположения о «правильном способе делать вещи», которые вы приносите вечеринка. Каждая среда программирования имеет свою собственную личность, которая часто является почти культурной единицей. Все может показаться странным, или плохим, или уродливым, но как аутсайдер, вы должны приостановить суждение, пока не получите истинное значение для всех идиом.

+0

Эй, я ценю ваш комментарий, я добавлю немного больше информации до конца о том, почему я не хочу переписывать плагин. –

+1

@PintSizedCat - какими бы ни были ваши предпочтения ... к сожалению, в данном случае это не имеет значения, вы не можете редактировать то, что хотите редактировать, не делая этого: a) ** внутри ** плагина или b) другой плагин , возможно, ваш собственный. –

+0

Хорошо, я оставлю это открытым, если кто-то найдет какой-нибудь фантастический способ сделать это;) –

0

Кому все равно нужны обновления второстепенных библиотек? Пока используемая версия делает то, что необходимо и не имеет применимых ошибок, нет никакой выгоды от обновления.

В любом случае, я бы никогда не рекомендовал получить доступную родительскую функцию в виде строки следующим образом: functionAsString=""+functionName изменить, что нужно для редактирования, а затем восстановить функцию: functionName=eval("("+functionAsString+")"). Но это возможно.

Различные браузеры возвращают несколько разные результаты при преобразовании функции в строку, но все они являются действительными объявлениями для этой точной функции, поэтому вы должны иметь возможность повторно выбирать свой путь из различий.

В качестве альтернативы вы можете получить файл сценария с помощью вызова ajax, а затем сделать то же, что и выше. Я все равно не рекомендую.

Смежные вопросы