人们为什么要将自己的自定义/用户功能添加到jQuery对象?

尼科·贝里奇(Niko Bellic)

我见过人们在jQuery对象($)中添加了自己的自定义/用户功能例如:

$.myUserFunc = function() { /* regular JS code */}

你为什么要这样做?而不是$.myUserFunc为什么不简单地创建函数,myUserFunc或者(如果要避免污染全局范围)将其放在另一个自定义/用户对象上myObj.myUserFunc呢?

jfriend00

您要询问的构造:

$.myUserFunc = function() {}

在jQuery名称空间对象上创建一个静态函数(全局可用)。这与jQuery插件方法不同。

一个人这样做的原因有很多-有些理由可能比其他理由更合理。

  1. 您可以创建一个与jQuery直接相关的jQuery实用工具功能(仅在使用jQuery时有用),但是其功能与插件方法不同。

  2. 您有一个不想放到全局名称空间中的全局函数(由于避免了很多顶级全局名称的所有典型原因),并且碰巧使用了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();
    };

})();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么要将自定义jQuery插件名称添加到范围

来自分类Dev

ValidForm Builder-如何将自定义功能添加到addButton()对象

来自分类Dev

ValidForm Builder-如何将自定义功能添加到addButton()对象

来自分类Dev

将自定义函数添加到对象原型

来自分类Dev

将自定义悬停功能添加到jQuery小部件

来自分类Dev

如何将自定义排序功能添加到jquery网格?

来自分类Dev

我可以将自己的功能添加到Excel中的自定义状态栏中吗?

来自分类Dev

通过(?)用户数据将自定义对象(例如,使用DYRateView进行评级)添加到GMSMarker

来自分类Dev

为什么需要将自定义事件分派给对象?

来自分类Dev

使用ParameterBuilder将自定义属性添加到返回值;属性在显示时不显示-为什么?

来自分类Dev

想要将自定义Google日历通知添加到通过Google表格创建的活动中

来自分类Dev

在Yii中将自定义帮助功能添加到哪个文件夹

来自分类Dev

如何将自定义模板添加到Word主屏幕功能区?

来自分类Dev

无法将自定义 PowerPoint 加载项添加到功能区

来自分类Dev

C#WPF:将自定义用户控件添加到Stackpanel

来自分类Dev

将自定义类型添加到Rails用户注册

来自分类Dev

Auth0将自定义声明添加到用户个人资料

来自分类Dev

C#WPF:将自定义用户控件添加到Stackpanel

来自分类Dev

如何将自定义属性添加到用户控件以进行绑定?

来自分类Dev

在Symfony中将自定义数据添加到用户配置文件

来自分类Dev

用户登录后将自定义属性添加到ASP.NET MVC身份

来自分类Dev

将自定义用户数据添加到 matplotlib 艺术家

来自分类Dev

Spring Jpa将自定义功能添加到所有存储库,同时将其他自定义功能添加到单个存储库

来自分类Dev

将自定义创建的发布对象添加到Wordpress循环中

来自分类Dev

如何将自定义对象添加到字符串

来自分类Dev

将自定义对象添加到Parse后端iOS

来自分类Dev

将自定义对象添加到JObject时出错

来自分类Dev

将自定义对象的parcelable添加到接口类

来自分类Dev

如何在GSON解析之前将自定义字段添加到对象

Related 相关文章

  1. 1

    为什么要将自定义jQuery插件名称添加到范围

  2. 2

    ValidForm Builder-如何将自定义功能添加到addButton()对象

  3. 3

    ValidForm Builder-如何将自定义功能添加到addButton()对象

  4. 4

    将自定义函数添加到对象原型

  5. 5

    将自定义悬停功能添加到jQuery小部件

  6. 6

    如何将自定义排序功能添加到jquery网格?

  7. 7

    我可以将自己的功能添加到Excel中的自定义状态栏中吗?

  8. 8

    通过(?)用户数据将自定义对象(例如,使用DYRateView进行评级)添加到GMSMarker

  9. 9

    为什么需要将自定义事件分派给对象?

  10. 10

    使用ParameterBuilder将自定义属性添加到返回值;属性在显示时不显示-为什么?

  11. 11

    想要将自定义Google日历通知添加到通过Google表格创建的活动中

  12. 12

    在Yii中将自定义帮助功能添加到哪个文件夹

  13. 13

    如何将自定义模板添加到Word主屏幕功能区?

  14. 14

    无法将自定义 PowerPoint 加载项添加到功能区

  15. 15

    C#WPF:将自定义用户控件添加到Stackpanel

  16. 16

    将自定义类型添加到Rails用户注册

  17. 17

    Auth0将自定义声明添加到用户个人资料

  18. 18

    C#WPF:将自定义用户控件添加到Stackpanel

  19. 19

    如何将自定义属性添加到用户控件以进行绑定?

  20. 20

    在Symfony中将自定义数据添加到用户配置文件

  21. 21

    用户登录后将自定义属性添加到ASP.NET MVC身份

  22. 22

    将自定义用户数据添加到 matplotlib 艺术家

  23. 23

    Spring Jpa将自定义功能添加到所有存储库,同时将其他自定义功能添加到单个存储库

  24. 24

    将自定义创建的发布对象添加到Wordpress循环中

  25. 25

    如何将自定义对象添加到字符串

  26. 26

    将自定义对象添加到Parse后端iOS

  27. 27

    将自定义对象添加到JObject时出错

  28. 28

    将自定义对象的parcelable添加到接口类

  29. 29

    如何在GSON解析之前将自定义字段添加到对象

热门标签

归档