javascript 設計模式之單體模式 面向對象學習基礎
2024-05-06 14:10:24
供稿:網友
單體模式(singleton)
單體是在腳本加載時創建的,能將一系列有關聯的變量和方法組織為一個邏輯單元,邏輯單元里面的內容通過單一的變量進行訪問;
一個單體主要分為三部分
用于訪問內部信息的入口變量(如:Sky)
屬性(如:nickName/age/timeInfo)
方法(如:sayHello)
基本結構
代碼如下:
var Sky = {
/*
* 作用一,變量管理
*/
nickName: "sky",
age: "26",
/*
* 作用二,加載中初始化變量
* 在加載過程中執行并初始化Sky.info
*/
timeInfo: function()
{
var _year = new Date().getFullYear();
return _year;
}(),
/*
* 作用三,函數管理,讓你的函數看起來不再那么散亂
*/
sayHello: function()
{
alert("hello,world!");
}
}
//所有內部信息通過Sky這個變量進行訪問;
alert(Sky.timeInfo);
以下是更詳細的說明,看完了這篇文章,相信你應該差不多了解了,網上好多高手的js寫法了,單體模式很常用。
單體是一個用來劃分命名空間并將一批相關的屬性和方法組織在一起的對象,如果他可以被實例化,那么他只能被實例化一次。
單體模式是javascript里面最基本但也是最有用的模式之一。
特點:
. 可以來劃分命名空間,從而清除全局變量所帶來的危險。
. 利用分支技術來來封裝瀏覽器之間的差異。
. 可以把代碼組織的更為一體,便于閱讀和維護。
單體的基本結構(正確寫法):
代碼如下:
/*Basic Singleton*/
var Singleton = {
attribute1:true,
attribute2:10,
method1:function(){},
method2:function(){}
};
劃分命名空間:
代碼如下:
var box = {
width:0,
height:0,
getArea:function(){
return this.width*this.height;//js中對象成的訪問必須是顯示的,即this是不能省略的
},
init:function(w,h){
// width = w;
// height = h;這種方式相當于定義了兩個全局變量,(沒加var聲明的變量為全局變量)
// 并不是對對象width和height的賦值
//下面是正確的
this.width = w;
this.height = h;
}
}//box劃分了一個命名空間,命名空間里的變量只在空間里有效
上面的單體中的所有的成員以及方法都是公有的(public),也就是在單體的外部可以對他們進行任意的改動,那為什么說單體提供了一個命名空間呢?
我們繼續:
代碼如下:
var box = {
width:0,
height:0,//單體的變量
getArea:function(){
return width*height;//中的,width,height其實并不是單體的變量,而是在init中定義的全局變量
}
init:function(w,h){
width = w;
height = h;
}
}//init中width,height其實并不是單體的變量