Javascript模块声明 - 性能

时间:2012-05-22 12:16:01

标签: javascript performance

我试图在以下方式之间决定编写JS模块。在内存和CPU上编写模块有什么含义。第二个会在浏览器中占用更多内存吗?

使用函数声明

function MyModule () {
    this.getOperation1 =  operation1;
    function operation1() {
        return "XYZ"
    }
}

使用变量定义

 var MyModule = {
     getOperation1: function() {
        return "XYZ"
     }
  }

2 个答案:

答案 0 :(得分:1)

记忆明智他们关于相同 - 都创造了一个对象。

然而:

  1. 您只能将new与基于功能的模块格式一起使用。后者只创建一个对象,而不是可用于创建其他实例的构造函数。

  2. 使用函数,您可以将私有局部变量括在范围内。

  3. 然而,在大多数案例中,更好的方法是:

    function MyModule () {
    }
    
    MyModule.prototype.getOperation1 = function() {
        ...
    }
    

    确保如果您创建多个实例,则它们只共享 getOperation1函数的一个副本。

    也就是说,如果您要做的就是命名功能,并且它们不会自然形成一个"对象' (在OOP意义上)那么你也可以使用对象文字语法。

答案 1 :(得分:1)

请参阅此yui-blog以获取与内存相关的参数

来自同一个

  

通过使用new来调用函数,该对象保持无用   原型对象。这浪费了记忆,没有抵消优势。如果   我们不使用新的,我们不保留浪费的原型对象   链

正如@Alnitak所提到的那样,使用prototype对象可以实现constructor函数,以便所有实例共享同一个对象。

要检查CPU智能[速度],请使用www.jsperf.com并进行性能测试。一些已经可用的测试 Function InvocationObject.create vs newGeneric