Javascript 函数的实用程序类

Javascript 函数的实用程序类,javascript,Javascript,我试图提高javascript应用程序的整体性能,并尝试为所有独立函数创建一个实用程序类。这样做是一种好的做法吗 此外,我还了解到可以使用以下匿名函数: (function(){ var Utils = { test: function () { ... }, test1: function () { ... } ... } }()) ;(function(namespace) { namespace.Utils = { test: functio

我试图提高javascript应用程序的整体性能,并尝试为所有独立函数创建一个实用程序类。这样做是一种好的做法吗

此外,我还了解到可以使用以下匿名函数:

(function(){

 var Utils = {
    test: function () { ... },
    test1: function () { ... }
    ...
 }

}())
;(function(namespace) {

  namespace.Utils = {
    test: function() {
      console.log('test');
    },
    test1: function() {
      console.log('test1');
    }
  };

}(this.namespace = this.namespace || {}));

namespace.Utils.test(); // test
但由于某些原因,我无法在另一个类中使用Utils.test(),因此

ReferenceError: Utils is not defined
现在我正在使用

  var Utils = {
   test: function () { ... },
   test1: function () { ... },
   ....
  }
这样做会有什么改进吗?还是我应该坚持使用经典的分离函数

function test() { ... }
function test1() { ... }
....

感谢您提供的帮助

您需要不同的语法来处理iLife,但我相信这样做是一种很好的做法

var Utils = (function(){

 return {
    test: function () { ... },
    test1: function () { ... }
    ...
 }

}())

对于一个规模合理的项目,通常会有一个项目名称空间,所有项目代码都在该名称空间下,这样就不会不必要地污染全局名称空间。您可以将名称空间作为参数传递给IIFE,并将在其中创建的代码附加到名称空间。大概是这样的:

(function(){

 var Utils = {
    test: function () { ... },
    test1: function () { ... }
    ...
 }

}())
;(function(namespace) {

  namespace.Utils = {
    test: function() {
      console.log('test');
    },
    test1: function() {
      console.log('test1');
    }
  };

}(this.namespace = this.namespace || {}));

namespace.Utils.test(); // test
瓜尔蒂耶罗种皮。我认为如果您使用ES6环境,这种方法会更好

我采用(并建议)的通常方法是创建一个实用程序类 就像下面的一个:

如何使用效用函数


今天,使用ES6,您可能会导出模块根目录中的所有方法,然后从“Utils.js”中以Utils的形式导入,

您已经创建了一个IIFE,并且该IIFE中定义的任何变量都只能在该范围内访问。而不是
Utils=
do
window.Utils=
(仅限浏览器)。。。“我试图提高javascript应用程序的整体性能”,将所有实用程序函数放在一个对象上(它不是一个类)不会提高应用程序的性能。但这仍然是一个好主意,因为全局命名空间非常拥挤,因此使用单个符号查找函数可以降低与其他函数冲突的几率。太好了,谢谢!我会尽快接受你的答案:)@Simon这与中提到的方法有何不同问题是。它会提高性能吗?你能解释一下吗?谢谢。我正在重构我的UTIL函数,这样我就可以通过mocha/chai轻松地测试它们,我相信你的方法适合我的需要:)。这是重构之前我的代码当人们永远不会使用它时,为什么要将
UTIL
声明为函数但是只是想给它分配一些实用方法?@PeterSeliger
function Util(){}
是一个类定义(通过创建一个空构造函数来完成)。然后实际的Util方法被挂接到这个类上。当然,这是显而易见的。但是使用一个永远不会被实例化为实用名称空间的类的意图是什么呢。