工厂函数进化到构造函数的过程

134 阅读2分钟

前言

最初,同类型的数据(如:学生信息列表),每次创建时占用篇幅大,耗时耗力,为了减轻工作量,工厂函数应运而生,而随着技术的进步,工厂函数也不再能满足人们的需求,此时更简单的构造函数也就随之诞生了。

进化过程

1.传统方式手动添加:

const std1 = { name: '张三', age: '21', score: '82', gender: '男', id: '001' }
const std2 = { name: '李四', age: '19', score: '75', gender: '男', id: '002' }
const std3 = { name: '翠花', age: '17', score: '93', gender: '女', id: '003' }
const std4 = { name: '小红', age: '22', score: '87', gender: '女', id: '004' }
// ...
// 缺点:代码冗余,耗时费力

2.工厂函数出现后:

const factory = (name,age,score,gender,id) => {
  const obj = {}
  obj.name = name
  obj.age = age
  obj.score = score
  obj.gender = gender
  obj.id = id
  return obj
}
std1 = factory('张三','21','82','男','001')
std2 = factory('李四','19','75','男','002')
std3 = factory('翠花','17','93','女','003')
// ...
// 优点:当相似信息过多时,一定程度上的减少了代码量,减少了代码冗余的过程

3.随着互联网技术的的升级,构造函数随之诞生:

const Person = function (name, age, score, gender, id) {
      this.name = name
      this.age = age
      this.score = score
      this.gender = gender
      this.id = id
    }
// 实例化对象
const std1 = new Person('张三', 21, '82', '男', '001')
const std2 = new Person('李四', 19, '75', '男', '002')
const std3 = new Person('翠花', 17, '93', '女', '003')
// ...
// 优点:相比工厂函数,简化了更多的操作如:创建空对象,return

总结


1. 手动添加:适用于数据量很少时,但是个人认为程序员应有的开发思维:为以后数据更新做好准备,
为便于维护做好准备。
2. 工厂函数:现在还是有这部分人在使用,也许这是老程序员的情怀,也有可能工厂函数有我不知道的优点。
3. 构造函数:观察仔细的人(本来就懂的人)应该看出来了:
    3.1  构造函数首字母大写:遵循大驼峰命名法。
    3.2  构造函数相比共产函数多了一个new,它的作用包含以下四点:
        3.2.1  创建了一个空对象。
        3.2.2  this指向new创建的这个空对象。
        3.2.3  this赋值。
        3.2.4  返回这个对象。