Javascript 類與靜態(tài)類的實現(xiàn)
更新時間:2010年04月01日 00:43:33 作者:
在Javascript里,對面向?qū)ο蟛]有一個直接的實現(xiàn),對于代碼方面也是非常的靈活。
今天所要說的就是,如何在Javascript里寫類與靜態(tài)類,這是本人一慣用的方法,你也可以有更為方便的,也可以發(fā)發(fā)評論跟大家交流交流。
首先說說類,在一個類里我們會有以下的幾個特征:
1. 公有方法
2. 私有方法
3. 屬性
4. 私有變量
5. 析構(gòu)函數(shù)
我們直接看一個例子:
類例子
/***定義類***/
var Class = function(){
var _self = this;//把本身引用負值到一變量上
var _Field = "Test Field"; //私有字段
var privateMethod = function(){ //私有方法
alert(_self.Property); //調(diào)用屬性
}
this.Property = "Test Property"; //公有屬性
this.Method = function(){ //公有方法
alert(_Field); //調(diào)用私用字段
privateMethod(); //調(diào)用私用方法
}
}
這里我已把注釋都寫上,大家大概也會一眼就看得明白。對于少寫JS的朋友,可能會覺得奇怪為什么我會定義一個_self的變量, 因為在js里,this不用對于其他的對象語言,他的解析過程與運行過程中this會改變的。這里簡單說說js里this的定義,若有需要我可以開多一篇。
定義:this是包含它的函數(shù)作為方法被調(diào)用時所屬的對象。
特征:this的環(huán)境可以隨著函數(shù)被賦值給不同的對象而改變!
有興趣的朋友可以網(wǎng)上找找資料了解一下,說回正題,這里的_self目的是為了開多一個私有的變量,直接指向類的本身。
剛剛還說到一個析構(gòu)函數(shù)的問題,這可以直接用代碼來實現(xiàn)。在函數(shù)的最后直接寫執(zhí)行代碼就OK。
代碼
/***定義類***/
var Class = function(){
var _self = this;//把本身引用負值到一變量上
var _Field = "Test Field"; //私有字段
var privateMethod = function(){ //私有方法
alert(_self.Property); //調(diào)用屬性
}
this.Property = "Test Property"; //公有屬性
this.Method = function(){ //公有方法
alert(_Field); //調(diào)用私用字段
privateMethod(); //調(diào)用私用方法
}
/***析構(gòu)函數(shù)***/
var init = function(){
privateMethod();
}
init();
}
使用這個類,引用我同事的那句“簡單得很!”
var c = new Class();
這樣就OK
類的定義就說完了,靜態(tài)類,要等到下一次了。因為有MM叫我去喝茶
一個人能夠走多遠,取決于與誰同行
首先說說類,在一個類里我們會有以下的幾個特征:
1. 公有方法
2. 私有方法
3. 屬性
4. 私有變量
5. 析構(gòu)函數(shù)
我們直接看一個例子:
類例子
復制代碼 代碼如下:
/***定義類***/
var Class = function(){
var _self = this;//把本身引用負值到一變量上
var _Field = "Test Field"; //私有字段
var privateMethod = function(){ //私有方法
alert(_self.Property); //調(diào)用屬性
}
this.Property = "Test Property"; //公有屬性
this.Method = function(){ //公有方法
alert(_Field); //調(diào)用私用字段
privateMethod(); //調(diào)用私用方法
}
}
這里我已把注釋都寫上,大家大概也會一眼就看得明白。對于少寫JS的朋友,可能會覺得奇怪為什么我會定義一個_self的變量, 因為在js里,this不用對于其他的對象語言,他的解析過程與運行過程中this會改變的。這里簡單說說js里this的定義,若有需要我可以開多一篇。
定義:this是包含它的函數(shù)作為方法被調(diào)用時所屬的對象。
特征:this的環(huán)境可以隨著函數(shù)被賦值給不同的對象而改變!
有興趣的朋友可以網(wǎng)上找找資料了解一下,說回正題,這里的_self目的是為了開多一個私有的變量,直接指向類的本身。
剛剛還說到一個析構(gòu)函數(shù)的問題,這可以直接用代碼來實現(xiàn)。在函數(shù)的最后直接寫執(zhí)行代碼就OK。
代碼
復制代碼 代碼如下:
/***定義類***/
var Class = function(){
var _self = this;//把本身引用負值到一變量上
var _Field = "Test Field"; //私有字段
var privateMethod = function(){ //私有方法
alert(_self.Property); //調(diào)用屬性
}
this.Property = "Test Property"; //公有屬性
this.Method = function(){ //公有方法
alert(_Field); //調(diào)用私用字段
privateMethod(); //調(diào)用私用方法
}
/***析構(gòu)函數(shù)***/
var init = function(){
privateMethod();
}
init();
}
使用這個類,引用我同事的那句“簡單得很!”
var c = new Class();
這樣就OK
類的定義就說完了,靜態(tài)類,要等到下一次了。因為有MM叫我去喝茶
一個人能夠走多遠,取決于與誰同行
相關(guān)文章
JavaScript 面向?qū)ο蟮闹接谐蓡T和公開成員
這節(jié)來說下JavaScript的私有成員和公開成員,雖然JavaScript沒有private和public關(guān)鍵字,但還是那句話——作為開發(fā)人員我們要有面向?qū)ο蟮乃枷耄?2010-05-05JavaScript面向?qū)ο?極簡主義法minimalist approach)
荷蘭程序員 Gabor de Mooij 提出了一種比 Object.create ()更好的新方法,他稱這種方法為極簡主義法(minimalist approach)。這也是我推薦的方法2012-07-07學習JS面向?qū)ο蟪晒?借國慶發(fā)布個最新作品與大家交流
學習JS面向?qū)ο蟪晒?,借國慶發(fā)布個最新作品與大家交流,大家可以看下。2009-10-10