今天進一步瞭解了js單例模式,下面說一下我的理解。
在實際問題中,我們在js文件中聲明過多的函數和全局變量,或者導入多個js文件,都可能導致全局變量的命名衝突問題。
單例模式要求類只能實例化一次並且提供實例的全局接口。通過單例模式,我們可以爲某些方法和屬性規劃一個命名空間來解決問題。
比較簡單的單例模式:
var test = {
a: 1,
b: 2,
demo: function() {
alert(a)
}
}
較爲常見的時下面的情況:
function a(){
}
function b(){
}
function c(){
} //函數過多就有可能造成衝突
可以通過以下方式解決:
var test = {
testa:1,
testb:2,
meta:function (){
}
metb:function (){
}
metc:function() {
}
}
這樣就可以通過對象test來訪問對象內部的屬性和方法。
當導入多個js文件時,也可以通過創建多個不同的對象來將各自的變量和方法進行“隔離”,避免衝突。