对象创建模式
创建对象的五种方式
- 使用Object构造函数
- 使用{}创建
- 使用工厂创建
- 使用构造函数创建
- 使用构造函数加原型创建
Object构造函数创建
优点:灵活性好,使用于对象属性不确定的情况
缺陷:语句太多,杂乱
var p = new Object()
p.name = "tom"
p.age = 12
p.setName = function (name) {
this.name = name
}
使用{}创建
优点:使用于对象确定的情况
缺点:每创建一个对象,都需要这样写,代码冗余
var per = {
name:'bob',
age:13,
setName:function (name) {
this.name = name
}
}
使用工厂创建对象
优点:利用工厂方法可创建多个对象。
缺点:创建的对象的类型模糊,都是Object类型
function creat(name,age){
var obj = {
name:name,
age:age,
setName:function (name) {
this.name = name
}
}
return obj
}
var person = creat("hhh",88)
console.log(person.name)
使用构造函数创建
优点:利用构造函数可创建多个对象。
缺点:但是产生了方法冗余。每个对象都有一样的方法
function Fun(name,age) {
this.name = name
this.age = age
this.setName = function (name) {
this.name = name
}
}
var p2 = new Fun("yyy",33)
console.log(p2.age)
构造函数加原型创建
避免了构造函数创建的对象的缺点,节省内存空间
function Fun(name,age) {
this.name = name
this.age = age
}
Fun.prototype.setName = function (name) {
this.mame = name
}
var p2 = new Fun("yyy",33)
console.log(p2.age)