实例化对象而不是将它们存储在变量中

时间:2014-07-22 09:30:01

标签: javascript performance prototypal-inheritance

我从一位同事那里得到了一条逻辑,并希望在我提交更改之前明确其后果。基本上,我有一个班级:

var MyClass = function(){};
MyClass.prototype = {...}

在另一个文件中,我正在定义一个需要该类的模块,并且有点像这样:

return {
   propA: new MyClass().propA,
   propB: new MyClass().propB
};

另一种方法是声明一个新的MyClass对象并使用它:

var myObject = new MyClass();

return {
   propA: myObject.propA,
   propB: myObject.propB
};

使用其中每一项的优点和缺点是什么?

2 个答案:

答案 0 :(得分:2)

因为(据我可以从示例中看出)你只是实例化MyClass来访问原型属性,为什么不切断中间人呢?

return {
   propA: MyClass.prototype.propA,
   propB: MyClass.prototype.propB
};

答案 1 :(得分:1)

看起来第二种方法效率更高,因为它只创建和使用一个实例,占用的CPU时间更少,内存更少。

在第一个示例中,您将创建2个新的MyClass实例,并从每个实例返回1个属性。

在第二步中,您将创建MyClass的新实例并在myObject中存储对它的引用。