请解释一下jQuery-ui项目中的这些行,它们与添加“子插件”有关
Please explain these lines in the jQuery-ui project - has to do with adding "sub-plugins"
jquery.effects.core.js的第10 - 16行:
;jQuery.effects || (function($, undefined) {
var backCompat = $.uiBackCompat !== false; // Irrelevant
$.effects = {
effect: {}
};
})(jQuery); // At end of file
据我所知,这添加了一个effects
"命名空间",但只有在它还不存在的情况下。
谁能给我解释一下:
- 开头的分号是干什么用的?
-
undefined
参数的目的是什么?undefined
的含义是否在某种程度上被覆盖了? - 直接向
jQuery
对象添加一个函数与按照jQuery文档中的建议向jQuery.fn
添加一个函数之间有什么区别? - 最后,如果我想创建一堆只供我自己的团队使用的jQuery插件,使用上面的代码将它们放在一个公司名称空间下是否有意义?
编辑:我现在意识到jQuery。Effects可能是一个不好的例子。我看到jQuery.ui.core.js有不同的做法:
(function( $, undefined ) {
$.ui = $.ui || {};
// add some stuff to $.ui here
$.fn.extend({
// plugins go here
});
})(jQuery);
但是,如果插件直接添加到$.fn
, ui
对象的用途是什么?我可以在$.fn
下定义我的命名空间并将所有插件添加到$.fn.acme
,以便我像这样使用它们:$('something').acme.doStuff()
吗?
对于这类事情是否有最佳实践?
- 检查
jQuery.effects
是否存在 - 如果没有,则定义一个函数并同时调用
(function() { ... } (jquery)
,它传递jQuery对象的原因与范围和冲突等。 - 该函数的第一行据说是不相关的,它似乎在检查jQuery插件属性 的存在
- 它定义了一个占位符(像命名空间或容器类)的效果jQuery插件属性。
那么,对于你的问题:
1。最初的分号是干什么用的?
我觉得没什么特别的。只是确保陈述清楚。如果在这一行之前的最后一行是一个函数声明关闭,这有一些边缘情况。
2。未定义参数的目的是什么?未定义的含义是否在某种程度上被忽略了?
它只是确保以后不会发生这种情况。直接传递全局对象。我想这是常见的模式。
3。直接向jQuery对象中添加函数与向jQuery中添加函数之间的区别是什么?jQuery文档中推荐的fn ?
这是jQuery的结构和一般组织问题。jQuery对象是一个函数并返回一个对象。.fn
处理注册这个应用于返回的jQuery对象(从jQuery选择或左右),所以,这是更好的,使jQuery实际上知道你添加的功能。
4。最后,如果我想创建一堆仅供我自己的团队使用的jQuery插件,那么使用上面的代码将它们放在公司名称空间下是否有意义?
大多数人不这么做。我不推荐。也许一个常见的"小"前缀就足够了。
相关文章:
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在映射数组中添加换行符
- 正在将数据主题添加到所有项目
- ZeroClipboard-在复制之前添加到值
- 我可以在json对象中添加一个函数吗
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何添加浮动和非浮动,其他
- 添加文字和评论功能更新Div
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 在函数中添加数组元素的数值
- 如何将歌曲添加到jPlayer
- 在html Select中添加搜索
- lunr.js添加有关索引记录的数据
- 流星.js添加有关用户帐户注册的更多信息
- 在Android + PhoneGap中添加有关滚动的帖子
- 需要有关构建逻辑、向对象添加属性的帮助
- 在完整日历中添加有关事件的更多信息
- 请解释一下jQuery-ui项目中的这些行,它们与添加“子插件”有关