解決了建立過個物件的問題,但沒有解決物件識別的問題(怎樣知道乙個物件的型別)
優點:避免建立多次物件
function
factory
(n,s)
; obj.name=n;
obj.***=s;
obj.
sleep
=function()
return obj;
}console.
log(
factory
("lisi"
,"男"))
;console.
log(
factory
("張三"
,"男"))
;
直接定義函式 this(指標問題)指向當前例項物件
優點:沒有返回值 沒有明顯的建立物件
function
page()
}//例項化物件
var page=
newpage()
;//直接呼叫方法
優點:原型物件的屬性方法都可以共享
省略了為建構函式傳遞初始化引數,結果所有例項享有相同的屬性
function
person()
//原型的屬性和方法
person.prototype=
}var per1=
newperson()
;per1.name=
"張三"
;per1.***=
"男";
console.
log(per1)
;console.
log(per1.
sleep
("打呼嚕"))
;
定義:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點
核心:確保只有乙個例項
實現:閉包
function
person
(name)
person.prototype.
getname
=function()
var getobject=
(function()
return instance;
}//返回乙個單獨的物件})
()//呼叫單例模式
console.
log(
getobject
("張三").
getname()
);//張三
console.
log(
getobject
("李四").
getname()
);//張三
console.
log(
getobject
("王五").
getname()
);//張三
這種單例只針對new person的,那要設定多個類物件,可以把單例方法抽為乙個共享方法:
function
person
(name)
person.prototype.
getname
=function()
vargetinstance
=function
(callback)
return instance;}}
console.
log(
getinstance
(function()
)().
getname()
);
JS設計模式
什麼是模式?什麼是設計模式?設計模式是解決軟體設計常見問題的可復用方案 什麼是反模式?反模式是一種針對某個特定問題的不良解決方案,該方案會導致槽糕的情況發生 單例模式?皇帝單例模式 var kingsingleton function return 皇帝存在返回皇帝 return instance ...
js 設計模式
1.單例模式 保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點 呼叫乙個類,任何時候返回的都是同乙個例項 class singleton getname static getinstance name return this.instance const instancea singleton...
js 設計模式
廣義上,模式是乙個可以用來產生其他事物的模板或者模型。在軟體開發過程中,模式是指乙個通用問題的解決方案,用抽象化表示和解決一類問題的模板。學習設計模式,有助於寫出可復用和可維護性高的程式 設計模式的原則是 找出 程式中變化的地方,並將變化封裝起來 1.工廠模式 即,函式裡面返回單個物件。缺點就是建立...