Хм ... интересно. У нас есть jQuery, который imho - отличный инструмент для взаимодействия с DOM. Это инструмент выбора, где вы можете написать свой собственный код (плагины) для изменения выбранных элементов. Здесь вы можете взаимодействовать со своим собственным (объектно-ориентированным) кодом в плагине, чтобы сделать что-то действительно классное.
Так зачем вам дополнительные возможности OO в jQuery, если вы не хотите наследовать от других плагинов jQuery?
Поскольку у вас может быть плагин, который позволяет вам делать следующее:
$(".spiffyness").yourSpiffyficationPlugin1();
И, несмотря на то, что вы уже делаете действительно классную удивительность, вам нужно больше проницательности.
Поэтому вы хотите наследовать от своего первого плагина, что приводит к:
$(".spiffyness").yourSpiffyficationPlugin2(); //plugin inherited from 1
Но ... разве вы тоже не добьетесь этого, сделав следующее:
$(".spiffyness").yourSpiffyficationPlugin1().yourSpiffyficationPlugin2();
Где второй плагин просто делает эту крошечную (но удивительную;) вещь сверх первой?
Другими словами: то, что вы хотите, стоит усилий ради ОО-пуризма? Или механизм трубы jQuery достаточно хорош и, возможно, все, что вам нужно?
Я бы сказал, что разделение обязанностей и / или ваше мышление mootools может быть реальной проблемой здесь. Позвольте jQuery делать то, что у него хорошо получается, использовать его мощный механизм конвейера, передавать ваши собственные плагины (которые могут содержать тонны причудливых OO-материалов) ... и вы можете получить отличные результаты, пока ваш код еще чист.
Если вы думаете, что я думаю здесь слишком просто, хороший пример сущности вашей точки зрения будет приветствоваться! : -)
И чтобы быть впереди, если вы делаете что-то действительно продвинутое и вам не нравится просто делать что-то поверх чего-то другого, ваш плагин также может делегировать один из ваших OO-классов. Например. как:
$.fn.totalAwesomeness = function(options) {
var defaults = {
mode: 1,
title: 'Awesome'
};
var opts = $.extend(defaults, options);
return this.each(function() {
var $this = $(this);
var handler = null;
if(defaults.mode == 1)
handler = new com.myStuff.class1($this);
else if(defaults.mode == 2)
handler = new com.myStuff.class2($this); //class2 inherits from class1
handler.doMagic();
});
};