批量创建对象的几种形式

如果当初咱们心愿创立一系列的对象,,比方person对象

工厂模式

//工厂模式// 只须要通过该函数就能够发明出大量对象function createPerson(name,age,address,sno){    var p = {}    p.name = name    p.age = age    p.address = address    p.sno = sno    p.eating = function(){        console.log(this.name+`正在游玩`);    }    p.running = function(){        console.log(this.name+`zhengzai`);    }    return p}var p1 = createPerson("张三",19,"北京市","110")var p2 = createPerson("张四",29,"北京市","110")// 工厂模式的毛病:获取不到对象最实在的类型// 1.当咱们打印应用工厂函数创立进去的对象时,会发现,对象类型时Object,并不是Person类型// 也就是说应用工厂函数创立进去的对象并没有一个比拟具体类型,只能看出时object类型

构造函数

构造函数也称为结构器(constructor),通常是咱们创建对象时会调用的函数
在其余编程语言中,构造函数时存在于类中的一个办法,称之为构造方法
然而js中的构造函数不太一样

意识构造函数
构造函数也是一个一般的函数
一旦通过new关键字去调用一个函数,那么这个函数就是一个构造函数了
通过new关键字创建对象时,会执行以下操作
1.在内存中创立一个新的对象(空对象)
2.这个对象外部的[[prototype]]属性会被赋值为该构造函数的prototype属性
3.构造函数外部的this会指向创立吹来的新的对象
4.执行函数的外部代码(函数体代码)
5.如果构造函数没有返回非空对象,则返回创立进去的新对象

function person(name, age, height, address) {  //将传递进来的属性增加到对象上  this.name = name;  this.age = age;  this.height = height;  this.address = address;  this.running = function(){    console.log(this.name+'在跑步');  }}var per1 = new person('张三三',18,1.65,'北京市')// 这里打印的per1的类型就是person了// 这里就能够拿到具体的对象类型console.log(per1);// 标准:构造函数的首字母最好是大写

构造函数也不是最好解决批量创建对象的办法
毛病:当构造函数中含有函数时,每当咱们创立一个对象,就会从新开拓一个存储该函数的空间,当创立多个对象时就会造成无意义的节约