有什么区别和更好用:工厂函数与构造函数。请说明您的方法,以便我学习

我有两个功能做同样的事情(我可能是错的,但在我的新手看来他们做同样的事情):


// Factory Function

function createCircle(radius) {

    return {

        radius,

        draw: function() {

            console.log('draw');

        }

    }

}

const newCircle = createCircle(2);

console.log(newCircle);


// Constructor Function

function Circle(radius) {

    this.radius = radius;

    this.draw = function() {

        console.log('draw')

    }

}

const another = new Circle(2);

console.log(another);

这些方法有优缺点吗?只是寻求更有经验的开发人员的意见。


Smart猫小萌
浏览 140回答 1
1回答

慕沐林林

在大多数情况下,我会说构造函数更好。instanceof它允许您使用运算符(即circle instanceof Circle)检查对象是否为 Circle它使代码更具可读性——当有人看到new Circle他们知道一个类正在被实例化时,他们知道它将具有可预测的行为,而对于第一种情况,他们需要createCircle在知道之前检查函数定义(或文档)关于此函数返回的内容的任何信息。您可以进一步优化构造函数 - 如果您在类的原型(即)上定义draw函数,则每次调用时都不会声明它。Circle.prototype.draw = function(){/*etc*/}new Circle也就是说,如果您要创建一个只有几个属性而没有方法的对象,那么使用第一个示例是完全合理的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript