jQuery如何实现$ jQuery函数的别名?

RBR*_*RBR 19 jquery

围绕$ sign作为jQuery函数的别名,我有点麻烦,特别是在插件中.你能解释一下jQuery如何实现这种别名:它如何定义'$'作为jQuery函数的别名?这是第一个问题.

其次,你能解释下面的代码如何/为什么在插件的定义中将'$'映射到jQuery函数,为什么如果你不这样做,你的插件可能会与其他可能使用美元符号的库发生冲突?

(function( $ ){
    $.fn.myPlugin = function() {
        // Do your awesome plugin stuff here
    };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

Ray*_*nos 25

它只是声明一个变量.看到这里

jQuery本身就是一个很大的自执行功能.这意味着它声明了一个函数然后运行它.在函数内部,它声明了jQuery一个函数的本地对象.

然后它将在它设置的最后 window.jQuery = window.$ = jQuery

这是设置window.jQuerywindow.$本地jQuery对象.我们可以通过使它们成为window对象的属性来设置全局变量.

现在,这两个window.jQuerywindow.$两个点jQuery,因为对象是通过引用传递.

var jQuery = (function() {

    var jQuery = function( selector, context ) {
        ...
    };

    ...

    return (window.jQuery = window.$ = jQuery);

}());
Run Code Online (Sandbox Code Playgroud)

因为在查找变量时它不需要向上查看额外的外部函数,因此它会小规模地声明jQuery两次以获得小的效率增益.

您可以使用这样的两个分配,因为 (var a = b) === b

正如其他人提到的那样,这$是一个有力的变量名称,而且函数是第一类对象,因此我们可以将它们视为对象也有助于实现这一目标.

  • '$'是javascript中的合法标识符. (3认同)

typ*_*eof 13

与javascript中的任何对象一样,函数可以分配给变量.此变量可以具有任何名称(遵循JS变量命名规则)."$"满足命名规则,因此为简洁起见,jQuery函数别名为"$".请考虑以下示例:

var myFn = function() { alert('myFunc'); };
var $ = myFn;

$();
// alerts 'myFunc'
Run Code Online (Sandbox Code Playgroud)

  • 除非你真的喜欢警告'myFunc' (6认同)