对象创建模式
方式一:Object构造函数模式
套路:先创建空Object对象,再动态添加属性、方法
适用场景:起始时不确定对象内部数据
问题:语句太多
var p=new Object() p.name='Tom' p.age=12 p.setName=function(name){ this.name=name }
方式二:对象字面量模式
套路:使用{}创建对象,同时指定属性、方法
适用场景:起始时对象内部数据是确定的
问题:如果创建多个对象,有重复代码
var p={ name:'Tome', age:12, setName:function(name){ this.name=name } }
方式三:工厂模式
套路:通过工厂函数动态创建对象并返回
适用场景:需要创建多个对象
问题:对象没有一个具体的类型,都是Object
function createPerson(name,age){ var obj={ name:name, age:age, setName:function(name){ this.name=name } } return obj }
自定义构造函数模式
套路:自定义构造函数,通过new创建对象
适用场景:需要创建多个类型确定的对象
问题:每个对象都有相同的数据,浪费内存
function Student(name,price){ this.name=name this,price=price this.setName=function(name){ this.name=name } } var s=new Student('tom',12)
构造函数+原型的组合模式
套路:自定义构造函数,属性在函数中初始化,方法添加到原型上
适用场景:需要创建多个确定的对象
function Student(name,price){ this.name=name this.price=price } Student.prototype.setNmae=function(name){ this.name=name } var s=new Student('tom',12)