В нашей работе здесь, наше решение для интеграционного тестирования имеет три больших части:
конечный результат состоит в том, что большинство людей здесь никогда не волнуется об интеграционном тестировании: это просто происходит. Поблочное тестирование, с другой стороны, является общим приоритетом. JUnit облегчает создавать тесты, хотя хороший тесты будут всегда требовать мысли и время разработки.
Как только вы используете $. Fn.foo.bar ()
- this
указывает на $. Fn.foo
, что и следовало ожидать от JavaScript ( this
является объектом, для которого вызывается функция.)
Я заметил в плагины из пользовательского интерфейса jQuery (например, sortable), в которых вы вызываете такие функции, как:
$(...).sortable("serialize");
$(...).sortable({options});
Если бы вы делали что-то вроде этого - вы могли бы расширить сам jQuery:
$.foo_plugin = {
bar: function() {},
baz: function() {}
}
$.fn.foo = function(opts) {
if (opts == 'bar') return $.foo_plugin.bar.call(this);
if (opts == 'baz') return $.foo_plugin.baz.call(this);
}
Я знаю, что на это уже был дан ответ, но я создал плагин, который делает именно то, что вы хотите:
http : //code.google.com/p/jquery-plugin-dev/source/browse/trunk/jquery.plugin.js
Я привел небольшой пример ниже, но ознакомьтесь с этим сообщением группы разработчиков jQuery для более подробный пример: http://groups.google.com/group/jquery-dev/browse_thread/thread/664cb89b43ccb92c/72cf730045d4333a?hl=en&q=structure+plugin+authoring#72cf730045d4333a
Это позволяет для создания объекта с любым количеством методов:
var _myPlugin = function() {
// return the plugin namespace
return this;
}
_myPlugin.prototype.alertHtml = function() {
// use this the same way you would with jQuery
alert($(this).html());
}
$.fn.plugin.add('myPlugin', _myPlugin);
теперь вы можете пойти:
$(someElement).myPlugin().alertHtml();
Есть, конечно, много-много других возможностей, как описано в сообщении группы разработчиков.
Я уверен, что есть много способов снять шкуру с этой кошки. Библиотека пользовательского интерфейса jQuery использует такой шаблон:
// initialize a dialog window from an element:
$('#selector').dialog({});
// call the show method of a dialog:
$('#selector').dialog('show');