我正在阅读有关创建namespace
和模块化模式的How Good C# Habits can Encourage Bad JavaScript Habits文章,但我不明白使用$
和jQuery
创建命名空间的原因。看看这段代码:
(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 ));
为什么要将$
作为参数发送,然后使用jQuery
调用它?
答案 0 :(得分:3)
当你加载jQuery库时,它会将两个全局符号绑定到对main函数的引用:“jQuery”和“$”。其他一些库也想使用“$”,所以jQuery提供了一种取消绑定“$”的方法,并将其恢复到加载jQuery之前的状态。通过在您的示例中使用该技术,您可以在代码中使用“$”,无论全局“$”是否指向jQuery。
编辑 - 您引用的那篇文章同样解释了它:
传递的第二个参数是jQuery。这样做的好处是命名参数被引用为$,这允许我们在匿名函数中将jQuery称为$,而不必担心它会与其他JavaScript库中声明的$冲突。这是一种常见的做法,在查看编写良好的jQuery代码时,您很可能会遇到这种情况。