Javascript 为什么人们要向jQuery对象添加自己的自定义/用户函数?
我见过人们将自己的自定义/用户函数添加到Javascript 为什么人们要向jQuery对象添加自己的自定义/用户函数?,javascript,jquery,Javascript,Jquery,我见过人们将自己的自定义/用户函数添加到jQuery对象($)。例如: $.myUserFunc = function() { /* regular JS code */} 你为什么要这样做?与其使用$.myUserFunc,不如简单地将函数创建为myUserFunc,或者(如果希望避免污染全局范围)将其放在另一个自定义/用户对象上,如myObj.myUserFunc 您所询问的结构: $.myUserFunc = function() {} 在jQuery命名空间对象上创建静态函数(全局可
jQuery
对象($
)。例如:
$.myUserFunc = function() { /* regular JS code */}
你为什么要这样做?与其使用
$.myUserFunc
,不如简单地将函数创建为myUserFunc
,或者(如果希望避免污染全局范围)将其放在另一个自定义/用户对象上,如myObj.myUserFunc
您所询问的结构:
$.myUserFunc = function() {}
在jQuery命名空间对象上创建静态函数(全局可用)。这与jQuery插件方法不同
有几个理由可以解释为什么会这样做——有些理由可能比其他理由更合理
也就是说,在许多情况下,您可以创建自己的闭包并定义自己的函数供自己的代码使用,而不必将它们放在全局命名空间或命名空间对象中。因此,除非这些函数必须可以从任何地方全局访问,否则它们不需要放在jQuery对象上 例如,假设有两个jQuery插件方法想要共享一个公共函数。显然,这个函数必须在这两个插件方法之外定义。但是,它不必在全球范围内定义。我可以这样结束和分享:
// define closure
(function() {
// declare shared function in a closure
function commonFunc() {
// common code here
}
// define first plugin method
jQuery.fn.plugin1 = function() {
// do stuff
// ....
// use common function
commonFunc();
};
// define other plugin method
jQuery.fn.plugin2 = function() {
// do different stuff
// ....
// use common function
commonFunc();
};
})();
使用myObj或myUserFunc会使全局计数翻一番,而不仅仅是$…@Morklympious:仅当它们是jQuery扩展时,否则您将不必要地面临冲突的风险。@dandavis我想将它们放在
$
全局上会更有意义,因为它不会导致命名冲突,并且很可能会为开发人员提供一个通用名称空间来抛出其函数。相关问题/答案:和。一般来说,人们在JS中做了很多奇怪的/愚蠢的/缓慢的/令人困惑的事情,这并不总是有一个很好的理由,但几乎所有的事情都是有效的。把东西放在美元上可以防止全球变暖,这是很多noobs认为最重要的事情。但是,如果注入jQuery或prototype的另一个副本,它也有被消灭的风险。在$上找到东西可能比在globals上更难,而且它紧密地结合了应该是两个独立的部分。我认为这不是一个好主意,但也不是最糟糕的事情。