2011-12-29 3 views
2

What't точка функции JQuery письма, как это:Разница между функциями jquery и регулярными функциями javascript?

(function($) { 
    $.fn.simple_hide_function = function() { 
    var $t = this; 
    $t.hide(); 
    }; 
})(jQuery); 

$(window).load(function() { 
$('#myId').simple_hide_function(); 
}); 

Почему бы не сделать это следующим образом:

function simple_hide_function(id){ 
id.hide(); 
}; 

$(window).load(function() { 
var my_id = $('#my_id'); 
simple_hide_function(my_id); 
}); 

Добавлен вопрос:

Будет ли какие-либо проблемы делать это?

function simple_hide_function(id){ 
id.hide(); 
}; 

$(window).load(function() { 
var my_id1 = $('#my_id1'), 
my_id2 = $('#my_id2'), 
my_id3 = $('#my_id3'); 
simple_hide_function(my_id1); 
simple_hide_function(my_id2); 
simple_hide_function(my_id3); 
}); 
+2

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

ответ

3

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

Во второй версии вы создаете функцию в глобальной области видимости и передаете ей объект jQuery. Это загрязняет глобальное пространство имен (теперь ваша функция видна повсюду), и это просто не совпадает с философией jQuery.

Однако, как вы обнаружили, функциональных различий нет. Оба будут исполнять штраф.

+0

Спасибо, Interrobang, я думаю, я понимаю, что вы имеете в виду. Просто, чтобы сделать берег, нет ничего плохого в том, что вы делаете, как версия для седанов? – Hakan

+0

Ну, с вашей второй версией вы не можете делать '$ ('# my_id1, # ​​my_id2, # my_id3). Simple_hide_function();' как вы можете с помощью версии плагина. Если вы собираетесь работать с вещами с помощью jQuery, вам обязательно нужно использовать плагин jQuery, вот и все. – Interrobang

0

Я думаю, что основная идея заключается в том, что вы не загромождаете глобальное пространство имен. В вашем втором примере simple_hide_function относится к окну и может вызвать конфликт имен, но в первом примере это локальная переменная.

+0

спасибо jkeesh! Я добавил вопрос. Будет ли это «загромождать» что-нибудь? – Hakan

+0

Второй пример также загромождает глобальное пространство имен, так как 'simple_hide_function' привязан к окну. Части ответа выше объясняют другие преимущества использования плагинов jQuery. – jkeesh

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