我有两个功能做同样的事情(我可能是错的,但在我的新手看来他们做同样的事情):// Factory Functionfunction createCircle(radius) { return { radius, draw: function() { console.log('draw'); } }}const newCircle = createCircle(2);console.log(newCircle);和// Constructor Functionfunction Circle(radius) { this.radius = radius; this.draw = function() { console.log('draw') }}const another = new Circle(2);console.log(another);这些方法有优缺点吗?只是寻求更有经验的开发人员的意见。
1 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
在大多数情况下,我会说构造函数更好。
instanceof
它允许您使用运算符(即circle instanceof Circle
)检查对象是否为 Circle它使代码更具可读性——当有人看到
new Circle
他们知道一个类正在被实例化时,他们知道它将具有可预测的行为,而对于第一种情况,他们需要createCircle
在知道之前检查函数定义(或文档)关于此函数返回的内容的任何信息。您可以进一步优化构造函数 - 如果您在类的原型(即)上定义
draw
函数,则每次调用时都不会声明它。Circle.prototype.draw = function(){/*etc*/}
new Circle
也就是说,如果您要创建一个只有几个属性而没有方法的对象,那么使用第一个示例是完全合理的。
添加回答
举报
0/150
提交
取消