3

I was reading How Good C# Habits can Encourage Bad JavaScript Habits article about creating namespace and modular pattern but I don't understand the reason to use $ and jQuery to create the namespace. Look at this code:

(function( skillet, $, undefined ) {
    //Private Property
    var isHot = true;

    //Public Property
    skillet.ingredient = "Bacon Strips";

    //Public Method
    skillet.fry = function() {
        var oliveOil;

        addItem( "\t\n Butter \n\t" );
        addItem( oliveOil );
        console.log( "Frying " + skillet.ingredient );
    };

    //Private Method
    function addItem( item ) {
        if ( item !== undefined ) {
            console.log( "Adding " + $.trim(item) );
        }
    }    
}( window.skillet = window.skillet || {}, jQuery ));

Why is it sending $ as parameter and then calling it with jQuery?

4

1 回答 1

3

当您加载 jQuery 库时,它会将两个全局符号绑定到对主函数的引用:“jQuery”和“$”。但是,其他一些库也希望使用“$”,因此 jQuery 提供了一种解除“$”绑定并将其恢复为加载 jQuery 之前的状态的方法。通过使用示例中的技术,无论全局“$”是否引用 jQuery,您都可以在代码中使用“$”。

编辑-您引用的那篇文章类似地解释了它:

传递的第二个参数 [is] jQuery。这样做的好处是命名参数被引用为 $,这允许我们在匿名函数中将 jQuery 引用为 $,而不必担心它会与其他 JavaScript 库中声明的 $ 冲突。这是您在查看编写良好的 jQuery 代码时很可能会遇到的常见做法。

于 2013-05-13T13:46:27.160 回答