jQuery变量阴影

时间:2012-04-24 07:46:57

标签: javascript jquery

jQuery中有一种奇怪的模式:

var jQuery = (function() {

// Define a local copy of jQuery
var jQuery = function( selector, context ) {
 ...
return jQuery;

})();

这是什么原因?为什么不公开内部jQuery函数?它只适用于内部jQuery和外部jQuery中的名称冲突,因为它们都在闭包中。

2 个答案:

答案 0 :(得分:5)

jQuery.noConflict(true)删除jQuery的全局名称。但是,如果不使用对象的某些名称来编程jQuery库的其余部分是不可能的,因此需要使用本地的非公开名称。为方便起见,他们将jQuery重新定义为匿名函数范围内的变量。

答案 1 :(得分:0)

模式本身称为模块模式。它不是特定于jQuery,它并不奇怪,但非常有用。它允许隐藏对象状态和实现。它还允许使用priveleged方法(可以访问私有数据的公共方法)和其他良好的设计原则。