我从一位同事那里得到了一条逻辑,并希望在我提交更改之前明确其后果。基本上,我有一个班级:
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
};
使用其中每一项的优点和缺点是什么?
答案 0 :(得分:2)
因为(据我可以从示例中看出)你只是实例化MyClass
来访问原型属性,为什么不切断中间人呢?
return {
propA: MyClass.prototype.propA,
propB: MyClass.prototype.propB
};
答案 1 :(得分:1)
看起来第二种方法效率更高,因为它只创建和使用一个实例,占用的CPU时间更少,内存更少。
在第一个示例中,您将创建2个新的MyClass实例,并从每个实例返回1个属性。
在第二步中,您将创建MyClass的新实例并在myObject中存储对它的引用。