jQuery中有一种奇怪的模式:
var jQuery = (function() {
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
...
return jQuery;
})();
这是什么原因?为什么不公开内部jQuery函数?它只适用于内部jQuery和外部jQuery中的名称冲突,因为它们都在闭包中。
答案 0 :(得分:5)
jQuery.noConflict(true)
删除jQuery的全局名称。但是,如果不使用对象的某些名称来编程jQuery库的其余部分是不可能的,因此需要使用本地的非公开名称。为方便起见,他们将jQuery
重新定义为匿名函数范围内的变量。
答案 1 :(得分:0)
模式本身称为模块模式。它不是特定于jQuery,它并不奇怪,但非常有用。它允许隐藏对象状态和实现。它还允许使用priveleged方法(可以访问私有数据的公共方法)和其他良好的设计原则。