對象創建模式
創建對象的五種方式
- 使用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)