1、Object构造函数模式
方法:先创建空Object对象,再动态添加属性/方法
适用场景:起始时不确定对象内部数据
问题:语句多
- var p=new Object();
- p.name='ss';
- console.log(p.name);//ss
2、对象字面量模式
方法:使用{}创建对象,同时指定属性/方法
适用场景:起始时对象内部数据确定
问题:如果创建多个对象,有重复代码
- var p={
- name:'s',
- age:34
- }
- console.log(p.age);//34
3、工厂模式
方法:通过工厂函数动态创建对象并返回
适用场景:需要创建多个对象
问题:对象没有具体类型。都是Object类型 不能区分各个身份
- function createPerson(name,age){
- var obj={
- name:name,
- age:age,
- setName:function(name){
- this.name=name
-
- }
- }
- return obj;
- }
- var p=createPerson('ss',34);
- console.log(p.name);//ss
4、自定义构造函数模式
方法:自定义构造函数u,通过new创建对象
适用场景:需要创建多个类型确定的对象
问题:每个对象都有相同的数据(方法,放在原型上),浪费内存
- function Person(name,age){
-
- this.name=name;
- this.age=age;
- this.setName=function(name){
- this.name=name
-
- }
- }
-
- var p=new Person('ss',34);
- console.log(p.name);//ss
5、构造函数加原型的组合模式
方法:自定义构造函数,属性再函数中初始化,方法在原型上
适用场景:需要创建多个类型确定的对象
- function Person(name, age) {
-
- this.name = name;
- this.age = age;
- }
- Person.prototype.setName = function(name) {
- this.name = name
- }
- var p = new Person('ss', 34);
- var p1 = new Person('s4s', 343);
- console.log(p,p1)