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