功能的实用程序类

时间:2016-02-21 15:07:33

标签: javascript

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

我也读过可以使用这样的匿名函数:

(function(){

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

}())

但由于某种原因,我无法在我的其他课程中使用Utils.test(),我得到

ReferenceError: Utils is not defined

现在我正在使用

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

这样做会有什么改进,或者我应该坚持使用经典的分离函数

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

感谢您的帮助

4 个答案:

答案 0 :(得分:7)

您需要使用不同的语法来处理IIFE,但我认为这样做是很好的做法

var Utils = (function(){

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

}())

答案 1 :(得分:5)

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

;(function(namespace) {

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

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

namespace.Utils.test(); // test

答案 2 :(得分:0)

如今,使用ES6,您可能会在模块的根目录中导出所有方法,然后执行import * as Utils from 'utils.js'

答案 3 :(得分:-1)

Gualtiero Testa wrote about this on his blog。我认为如果你使用的是ES6环境,这个方法会更好。

  

我采用(并建议)的常用方法是创建实用程序类   如下所示:

function Util () {}

Util.read = function (sel) {
    return jQuery(sel).val();
};

Util.write = function (sel, val) {
    jQuery(sel).val(val);
};
  

如何使用实用程序功能?

// read the value of the element with id myinput
var val = Util.read('#myinput');