为什么人们要在jQuery对象中添加自己的自定义/用户函数
Why do people add their own custom/user functions to the jQuery object?
我见过人们将自己的自定义/用户函数添加到jQuery
对象($
)中。例如:
$.myUserFunc = function() { /* regular JS code */}
你为什么要这么做?为什么不将函数创建为简单的myUserFunc
,而不是$.myUserFunc
,或者(如果你想避免污染全局范围)将其放在另一个自定义/用户对象上,如myObj.myUserFunc
?
您询问的构造:
$.myUserFunc = function() {}
在jQuery命名空间对象上创建一个静态函数(全局可用)。这与jQuery插件方法不同。
人们可能会这样做有几个原因——有些原因可能比其他原因更有道理。
您可以创建一个与jQuery直接相关的jQuery实用程序函数(仅在使用jQuery时有用),但它的级别与插件方法不同。
您有一个不想放在全局名称空间中的全局函数(由于避免使用许多顶级全局名称的所有典型原因),而您恰好使用jQuery,因此您选择将全局函数放在jQuery namspace对象上。
在我看来,第一个是有道理的。如果它是特定于jQuery的函数,但它是一个全局函数,而不是jQuery对象的方法(就像插件一样),那么将它放在主jQuery上是有意义的。当已经有合适的名称空间并且您的函数与该名称空间对象相关时,实际上没有理由再实现另一个顶级名称空间。
在我看来,从建筑的角度来看,第二个原因没有那么大的意义。如果这个函数不是特定于jQuery的函数(例如,不使用或操作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();
};
})();
- 谷歌地图api:如何将我自己的标记添加到地图
- 我该如何将自己的数据添加到响应迅速的美国各州地图中
- 如何将我自己的验证代码添加到MooTools的lightface表单中
- 如果web托管版本失败,请添加我自己的.js库版本
- 如何将我们自己的按钮添加到浏览器的标题栏中
- 如何在某人的网页上添加自己的图层
- JsPlumb - 将自己的选择器函数添加到动态锚点
- 在 AJAX 函数中添加自己的 javascript 函数 ASP.NET
- 挖空添加我自己的数据绑定属性,如 With
- ReactJS:将我自己的道具添加到另一个组件中
- 谷歌地图API,添加我自己的位置
- 如何添加我自己的Meteor.users个人资料;使用aldeed自动成型和collection2
- 用Greasemonkey添加我自己的onclick功能
- 如何在angular js验证中添加自己的类名
- 为什么人们要在jQuery对象中添加自己的自定义/用户函数
- 如何从FB喜欢按钮添加到我自己的网页状态
- 如何扩展JqPlot类并添加自己的原型函数
- 如何用Backbone.validation添加我自己的验证器
- 将自定义JS文件和字体添加到您自己的UIkit分发版的最佳方法是什么?
- 在我的Shopify Liquid主题中添加并解析我自己的JSON对象