¿Qué significa (function (function) {})(jQuery);?


Estoy empezando con la escritura de plugins jQuery. Escribí tres pequeños complementos, pero simplemente he estado copiando la línea en todos mis complementos sin saber realmente lo que significa. ¿Alguien puede contarme un poco más sobre esto? Tal vez una explicación sea útil algún día al escribir un framework:)

, ¿Qué hace esto? (Sé que se extiende jQuery de alguna manera, pero hay algo más interesante que saber sobre esto)

(function($) {

})(jQuery);

¿Cuál es la diferencia entre la siguiendo dos formas de escribir un plugin:

Tipo 1:

(function($) {
    $.fn.jPluginName = {

        },

        $.fn.jPluginName.defaults = {

        }
})(jQuery);

Tipo 2:

(function($) {
    $.jPluginName = {

        }
})(jQuery);

Tipo 3:

(function($){

    //Attach this new method to jQuery
    $.fn.extend({ 

        var defaults = {  
        }  

        var options =  $.extend(defaults, options);  

        //This is where you write your plugin's name
        pluginname: function() {

            //Iterate over the current set of matched elements
            return this.each(function() {

                //code to be inserted here

            });
        }
    }); 
})(jQuery);

Podría estar muy lejos de aquí y tal vez todos significan lo mismo. Estoy confundido. En algunos casos, esto no parece estar funcionando en un plugin que estaba escribiendo usando el tipo 1. Hasta ahora, el tipo 3 me parece el más elegante, pero me gustaría saber sobre los demás también.


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52