工厂函数与构造函数

188 阅读1分钟

什么是工厂函数

其实工厂函数就是用来创建多个属性名相同但属性值不同的对象

function createPerson(name,age){
            let p = {}
            p.name = name
            p.age = age
            return p
        }
        //调用者
        let p1 =  createPerson('张三',20)

从以上代码中我们不难看出工厂函数工作的流程
1.声明空对象
2.赋值给这个空对象
3.返回这个空对象
每调用一次这个函数就创建一个对象

什么是构造函数

构造函数的作用与工厂函数的作用是一致的,但构造函数的代码更加简洁

function createPerson(name,age){
            this.name = name
            this.age = age
        }
        //调用者
        let p1 = new createPerson('张三',20)

而构造函数的流程更加简单,但为什么简单呢?
是因为new关键字将工厂函数的流程全部走了一遍

new工作流程

1.创建一个空对象
2.this指向这个空对象
3.赋值这个空对象
4.返回这个空对象

构造函数与工厂函数的异同点

相同点: 都是用来创建多个属性名相同但属性值不同的对象
不同点:
1.工厂函数不使用new
2.工厂函数不使用this
3.工厂函数需要返回新对象