Javascript 類與靜態(tài)類的實(shí)現(xiàn)
更新時(shí)間:2010年04月01日 00:43:33 作者:
在Javascript里,對(duì)面向?qū)ο蟛](méi)有一個(gè)直接的實(shí)現(xiàn),對(duì)于代碼方面也是非常的靈活。
今天所要說(shuō)的就是,如何在Javascript里寫(xiě)類與靜態(tài)類,這是本人一慣用的方法,你也可以有更為方便的,也可以發(fā)發(fā)評(píng)論跟大家交流交流。
首先說(shuō)說(shuō)類,在一個(gè)類里我們會(huì)有以下的幾個(gè)特征:
1. 公有方法
2. 私有方法
3. 屬性
4. 私有變量
5. 析構(gòu)函數(shù)
我們直接看一個(gè)例子:
類例子
/***定義類***/
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è)私有的變量,直接指向類的本身。
剛剛還說(shuō)到一個(gè)析構(gòu)函數(shù)的問(wèn)題,這可以直接用代碼來(lái)實(shí)現(xiàn)。在函數(shù)的最后直接寫(xiě)執(zhí)行代碼就OK。
代碼
/***定義類***/
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è)類,引用我同事的那句“簡(jiǎn)單得很!”
var c = new Class();
這樣就OK
類的定義就說(shuō)完了,靜態(tài)類,要等到下一次了。因?yàn)橛蠱M叫我去喝茶
一個(gè)人能夠走多遠(yuǎn),取決于與誰(shuí)同行
首先說(shuō)說(shuō)類,在一個(gè)類里我們會(huì)有以下的幾個(gè)特征:
1. 公有方法
2. 私有方法
3. 屬性
4. 私有變量
5. 析構(gòu)函數(shù)
我們直接看一個(gè)例子:
類例子
復(fù)制代碼 代碼如下:
/***定義類***/
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è)私有的變量,直接指向類的本身。
剛剛還說(shuō)到一個(gè)析構(gòu)函數(shù)的問(wèn)題,這可以直接用代碼來(lái)實(shí)現(xiàn)。在函數(shù)的最后直接寫(xiě)執(zhí)行代碼就OK。
代碼
復(fù)制代碼 代碼如下:
/***定義類***/
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è)類,引用我同事的那句“簡(jiǎn)單得很!”
var c = new Class();
這樣就OK
類的定義就說(shuō)完了,靜態(tài)類,要等到下一次了。因?yàn)橛蠱M叫我去喝茶
一個(gè)人能夠走多遠(yuǎn),取決于與誰(shuí)同行
相關(guān)文章
改變javascript函數(shù)內(nèi)部this指針指向的三種方法
javascript 的this 值,真的是非常的莫名奇妙。我一直被搞的很頭暈,也許正是這個(gè)this,讓大多數(shù)人感覺(jué)js 非常的莫名其妙。2010-04-04
學(xué)習(xí)面向?qū)ο笾嫦驅(qū)ο蟮幕靖拍?對(duì)象和其他基本要素
學(xué)習(xí)面向?qū)ο笾嫦驅(qū)ο蟮幕靖拍?對(duì)象和其他基本要素2010-11-11
Javascript面向?qū)ο髷U(kuò)展庫(kù)代碼分享
最近一直在用js做項(xiàng)目,遇到了許多需要應(yīng)用面向?qū)ο髞?lái)設(shè)計(jì)的功能,由于js對(duì)OOP的原生支持還不是很完善,所以就寫(xiě)了一個(gè)面向?qū)ο蟮臄U(kuò)展庫(kù)用做底層支持,現(xiàn)在把它單獨(dú)整理出來(lái),完善了一些功能,在這里分享一下2012-03-03
DOMAssitant最新版 DOMAssistant 2.5發(fā)布
google code上的project ,值得大家學(xué)習(xí)它的類庫(kù)2007-12-12
AppBaseJs 類庫(kù) 網(wǎng)上常用的javascript函數(shù)及其他js類庫(kù)寫(xiě)的
AppBaseJs類庫(kù)。一個(gè)借鑒了網(wǎng)上常用的函數(shù)及其他js類庫(kù)寫(xiě)的,方便大家的調(diào)用。2010-03-03

