批量创建对象的几种方式如果我们现在要创建一系列对象,比如person对象factorymode//Factorymode//只需要使用这个函数就可以创建大量的对象functioncreatePerson(name,age,地址,sno){varp={}p.name=namep.age=agep.address=addressp.sno=snop.eating=function(){console.log(this.name+`playing`);}p.running=function(){console.log(this.name+`zhengzai`);}returnp}varp1=createPerson("张三",19,"北京","110")varp2=createPerson("张四",29,"北京","110")//工厂模式的缺点:获取不到对象的真实类型//1.当我们打印使用工厂函数创建的对象时,会发现该对象的类型是Object,而不是Person类型//也就是说创建的对象通过使用工厂函数没有特定的类型。只能看出对象类型的构造器构造器也叫构造器(constructor),通常我们在创建对象时会调用的函数在其他编程语言中,构造器是类中存在的一个方法,称为构造函数,但是js中的构造函数是不一样的。构造函数也是一个普通函数。一旦通过new关键字调用了一个函数,那么这个函数就是一个构造函数。通过new关键字创建对象时,会进行以下操作:1.在内存中创建一个新对象(空对象)2.内部的[[原型]]属性会被赋值为构造函数的原型属性3.构造函数内部的this会指向创建并吹出的新对象4.执行函数内部代码(函数体代码)5.如果构造函数不返回非对象为空,则返回创建的新对象函数person(姓名、年龄、身高、地址){//将传递的属性添加到对象中this.name=name;这个。年龄=年龄;this.height=高度;this.address=地址;this.running=function(){console.log(this.name+'running');}}varper1=newperson('张三三',18,1.65,'北京')//这里打印的per1的类型是person//这里可以得到具体的对象类型console.log(per1);//Specification:构造函数首字母最好大写。构造函数并不是解决批量创建对象问题的最佳方式。缺点:当构造函数中包含函数时,每当我们创建一个对象时,它都会重新开辟一个空间来存放该函数,在创建多个对象时会造成无意义的浪费。构造函数结合原型——批量创建对象的最佳方式functionPerson(name,age,height,address){this.name=name;这个。年龄=年龄;this.height=高度;this.address=address;}//原型结合构造函数创建对象Person.prototype.eating=function(){console.log(this.name+"eating");};Person.prototype.running=function(){console.log(this.name+"running");};varp1=newPerson('jjj',18,1.60,"北京市")varp2=newPerson('2222',18,1.60,"北京”)
