Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在构建自己的JavaScript库或jQuery插件时,我必须避免入侵吗?_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

在构建自己的JavaScript库或jQuery插件时,我必须避免入侵吗?

在构建自己的JavaScript库或jQuery插件时,我必须避免入侵吗?,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,最近,我一直在构建一些JavaScript库以及一些jQuery插件,我有一个“utils.js”文件,在其中我为数组、字符串、数字,等等设置了所有自定义函数,并将其包含在库或插件的最终缩小版本中 大概是这样的: String.prototype.custom_method = function() { // Do custom stuff }; Array.prototype.custom_method = function() { // Do custom stuff }; 因此

最近,我一直在构建一些JavaScript库以及一些jQuery插件,我有一个“utils.js”文件,在其中我为
数组
字符串
数字
,等等设置了所有自定义函数,并将其包含在库或插件的最终缩小版本中

大概是这样的:

String.prototype.custom_method = function() {
  // Do custom stuff
};

Array.prototype.custom_method = function() {
  // Do custom stuff
};
因此,以下是我的问题:

  • 我必须避免这样吗?这种做法不好吗
  • 如果我把这些方法放在每个库/插件的范围内会更好吗

    • 如果jQuery和Modernizer做了完全相同的事情(提供了很多现成的功能,而普通人仍然只使用10%),我看不出有什么问题

      它肿了吗?也许。最好只包括你使用的文件(谷歌插件方法的一大优点,包括你需要的),但是我看不到比已经存在的威胁更大的威胁

      我认为划分它们是朝着正确方向迈出的一步,因为多个库可能需要它们(没有重复的声明)。但是,如果您真的担心它,您可以执行测试声明设置:

      if (typeof foo === 'undefined'){
        function foo(){}
      }
      

      但再一次,它需要包含在您发布/构建的每个库中,而不是“包罗万象”的库中


      简短回答:扩展本机类型不是很好,但还可以。像下划线.js那样包装它们会更好,因为这样以后就不会有冲突了。

      这取决于受众。如果在默认类中添加或覆盖方法,您将永远无法赢得企业用户的青睐。谁知道会引起什么冲突?看看underline.js,它是一个努力不使用decorator方法实现这一点的库。这对代码库的用户来说更友好,除了代码之外,代码库可能还包括什么


      但是,如果您的代码确实可以在思洛存储器中自行运行,那么就去做。

      “如果jQuery和Modernizer做了完全相同的事情”,它们不会扩展内置程序。@rpflo:好的,库呢?我的观点是,库包含很多在文件生命周期的大部分时间都处于休眠状态的功能。包括一个“helper”库,尽管它添加了“bloat”,但在其他方面是无害的。