对象创建模式
object构造函数模式
先创建一个空的object,再添加属性,适用于不确定对象的数据
var p = new Object()
p.name = "zlearn"
p.setName = function(name){
this.name = name
}
对象字面量模式
适用对象来创建如果创建多个对象,会有重复代码,适用于其实对象内部数据是确定的
var p = {
name: 'Tom',
age: 12,
setName: function(name){
this.name = name
}
}
工厂模式
返回一个对象的函数,适合需要创建多个对象,缺点就是对象没有一个具体的类型
function createPerson(name,age){
var obj = {
name: name,
age:age,
setName:function(name){
this.name = name
}
}
return obj
}
var p1 = createPerson("zlearn",12)
var p2 = createPerson("Eason",13)
自定义构造函数模式
缺点就是每个对象都有相同的数据,浪费内存,setName()都是一样的,但是创建了很多份。
function createPerson(name,age){
this.name = ame
this.age = age
this.setName = function(name){
this.name = name
}
}
var p1 = createPerson("zlearn",12)
var p2 = createPerson("Eason",13)
构造函数+原型模式
函数里只存属性,将方法存到原型对象上
function createPerson(name,age){
this.name = ame
this.age = age
}
createPerson.prototype.setName = function(name){
this.name = name
}
var p1 = createPerson("zlearn",12)
var p2 = createPerson("Eason",13)