Javascript 用于扩展jQuery的奇怪语法
我最近在另一篇帖子上看到了这段代码() 在花了很长时间试图理解它在做什么之后,我最终发现它只是用参数$创建了一个新函数,然后用jQuery作为参数值调用它 所以实际上,它只是这样做:Javascript 用于扩展jQuery的奇怪语法,javascript,jquery,Javascript,Jquery,我最近在另一篇帖子上看到了这段代码() 在花了很长时间试图理解它在做什么之后,我最终发现它只是用参数$创建了一个新函数,然后用jQuery作为参数值调用它 所以实际上,它只是这样做: jQuery.fn.setCursorPosition = function(pos) { // function body omitted, not relevant to question } 原始版本更混乱的原因是什么?对于大块代码,使用$比使用jQuery要好得多 当使用多个库时,人们通常会禁用$
jQuery.fn.setCursorPosition = function(pos) {
// function body omitted, not relevant to question
}
原始版本更混乱的原因是什么?对于大块代码,使用
$
比使用jQuery
要好得多
当使用多个库时,人们通常会禁用$
快捷方式,因为许多库都使用它。这样编写代码允许用户使用快捷方式编写代码,而不必担心与其他库发生冲突。由于该网站适用于广泛的受众,无论用户是否启用了$
,使用该代码最有可能奏效
new function($) {
$.fn.setCursorPosition = function(pos) {
// function body omitted, not relevant to question
// You are safe to always use $ here
}
} (jQuery);
及
由于其他JavaScript库可能全局使用
$
,因此您的库应该显式引用jQuery
,以防止冲突。通过使用参数$
创建函数,可以将jQuery
对象绑定到该函数范围内的变量。这使您能够安全地显式指定jQuery
对象,并方便地使用$
速记
这是我习惯看到的模式:
(function($) {
// code using $ goes here
})(jQuery);
这似乎也是jQuery插件中防止冲突的一种非常常用的做法。
jQuery.fn.setCursorPosition = function(pos) {
// function body omitted, not relevant to question
// you have to make sure $ was not overwritten before using it here..
}
(function($) {
// code using $ goes here
})(jQuery);