方式一: object建構函式模式
套路: 先建立空object物件, 再動態新增屬性/方法
適用場景: 起始時不確定物件內部資料
問題: 語句太多
var ob =
newobject()
; ob =
; ob.name =
"凌月"
; ob.age =18;
ob.setname
=function
(name)
ob.setage
=function
(age)
ob.name=
"鳳千羽"
; ob.age=22;
console.
log(ob.name,ob.age)
;
方式二: 物件字面量模式
套路: 使用{}建立物件, 同時指定屬性/方法
適用場景: 起始時物件內部資料是確定的
問題: 如果建立多個物件, 有重複**
var ob=
, setage :
function
(age)
}
console.
log(ob.name,ob.age)
;var ob2=
, setage :
function
(age)
} document.
write
(ob2.name,
"\n"
+ob2.age)
;
方式三: 工廠模式
套路: 通過工廠函式動態建立物件並返回
適用場景: 需要建立多個物件
問題: 物件沒有乙個具體的型別, 都是object型別
// 工廠函式: 返回乙個需要的資料的函式
function
creatperson
(name, age)
, setage:
function
(age)
}return ob;
}var p =
creatperson
("鳳千羽",22
);var p2 =
creatperson
("凌月",18
) console.
log(p)
; console.
log(p2)
;
方式四: 自定義建構函式模式
套路: 自定義建構函式, 通過new建立物件
適用場景: 需要建立多個型別確定的物件
問題: 每個物件都有相同的資料, 浪費記憶體
function
person
(name, age)
this
.setage
=function
(age)
}var p =
newperson
("鳳千羽",22
);var p2 =
newperson
("凌月",18
) console.
log(p)
; console.
log(p2)
; console.
log(p instanceof
person
)
方式六: 建構函式+原型的組合模式
套路: 自定義建構函式, 屬性在函式中初始化, 方法新增到原型上
適用場景: 需要建立多個型別確定的物件
function
person
(name, age)
person.prototype.
setage
=function
(age)
}var p =
newperson
("鳳千羽",22
);var p2 =
newperson
("凌月",18
) console.
log(p)
; console.
log(p2)
; console.
log(p instanceof
person
)
「物件建立」模式
定義 通過 物件建立 模式繞開new,來避免物件建立 new 過程中所導致的緊耦合 依賴具體類 從而支援物件的穩定。它是介面抽象之後的第一步工作。在軟體系統中,經常面臨著建立物件的工作 由於需求的變化,需要建立的物件的具體型別經常變化。如何應對這種變化?如何繞過常規的物件建立方法 new 提供一種 ...
」物件建立」模式 工廠模式
物件建立 模式 通過 物件建立 模式繞開new,來避免物件 new 過程中所導致的緊耦合 依賴具體類 從而支援物件建立的穩定,他是介面之後的第一步工作 典型模式 factory method abstract factory prototype builder 動機在軟體系統中,經常面臨著建立物件的...
JS物件建立模式
1 var person new object 23 person.name name 4 person.age 43 56 console.log person 1 套路 先建立空object物件,再動態新增屬性 方法 2 適用場景 起始時不確定物件內部資料 3 問題 語句太多 1 var per...