这个函数定义有什么意义?

Sta*_*ers 11 javascript jquery

我理解如何定义这样的函数:

function myfunc(x,y,z) {
   alert("Just an example " + x + y + z)
}
Run Code Online (Sandbox Code Playgroud)

但不是这个:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    <script>
        (function ($) {
        $.fn.idle = function (x, y, z) {
            alert("Just an example " + x + y + z)
    }(jQuery));
    </script>
Run Code Online (Sandbox Code Playgroud)

以上是我正在使用的库的一部分,但我根本无法理解这$.fn.idle一点.

它在做什么?它以某种方式定义了一个名为'idle'的函数,但是$.fn呢?那(function ($) {部分怎么样?我再次明白,$(document).ready(function() {(function ($) {完全是外星人.这是一个简短的手吗?

(jQuery));底部有什么意义?

Fab*_*tté 8

一个立即调用的功能表达,其别名jQuery$其范围内:

(function($) {}(jQuery));
Run Code Online (Sandbox Code Playgroud)

它立即创建并执行一个函数.这样,您可以$在函数内部使用jQuery,无论全局$引用是什么.适用于使用的页面jQuery.noConflict().在IIFE内声明的变量也不会泄漏到全局范围.


至于问题的其他部分,$.fn === jQuery.prototype.因此,通过向jQuery原型添加方法,您可以在任何jQuery对象上调用它.例如:

$.fn.doSomething = function(){}; //add a method to the jQuery prototype
$('selector').doSomething(); //then you may call it on any jQuery object
Run Code Online (Sandbox Code Playgroud)

有关jQuery插件创作的更多信息.