Javascript類定義語法,私有成員、受保護(hù)成員、靜態(tài)成員等介紹
更新時(shí)間:2011年12月08日 23:18:14 作者:
JS只是一門支持面向?qū)ο缶幊痰恼Z言,通過OO可以讓我們的代碼組織更加人性化??墒桥c傳統(tǒng)基與類的面向?qū)幊陶Z言不同它沒有類概念并且沒成員訪問修飾符。這多少會(huì)給我們編程工作會(huì)帶來一些束縛
其實(shí)通俗的講類就是對(duì)象的模板,為了增強(qiáng)JS的OO特性,受mootoos框架啟發(fā)我們可以使用一個(gè)JSON對(duì)象來描述這個(gè)對(duì)象的模板。在這個(gè)模板中我們可以模擬實(shí)現(xiàn)私有成員,受保護(hù)成員,靜態(tài)成員。
這是一個(gè)在JS中模擬的類定義語法,代碼中Class是一個(gè)自定義函數(shù),它接受兩個(gè)參數(shù),第一個(gè)參數(shù)是類名、第二個(gè)參數(shù)是一個(gè)JSON用來一個(gè)對(duì)象的模板。在這個(gè)JSON對(duì)象中其中字段 "extend",,"initialize","static" 為一些預(yù)定義關(guān)鍵字,所表示的意義與基于類的傳統(tǒng)OO語言相似。字段accessabe用來描述一個(gè)對(duì)象成員的可訪問性,取值為("private","protected","public")在Class函數(shù)中會(huì)對(duì)這些關(guān)鍵字進(jìn)行特殊處理,使其所修飾的成員具有相應(yīng)的訪問權(quán)限。
Class("Person" ,{
//繼承
extend: Animal,
//構(gòu)造函數(shù)
initialize:function(name,sex){
this.name = name;
this.sex = sex;
Person.count++;
},
//靜態(tài)成員
static:{
count: {
accessabe:"private",
value: ""
}
},
//實(shí)例成員
age: {//私有屬性成員
accessabe:"private",
value:0
},
//公用屬性
name: {
accessabe:"public",
value:""
},
sex:{
accessabe:"public",
value: ""
},
//方法
sleep: {//受保護(hù)方法
accessabe:"protected",
value: function(){
}
},
say: {//公用方法
accessabe:"public",
value: function(){
retun (this.age-1)
}
}
});
//調(diào)用
var xiaom = new Person("小明","男");
xiaom.age //私有屬性不能訪問
xiaom.sleep() //受保護(hù)方法不能訪問
xiaom.say() //公用方法可以訪問
這是一個(gè)在JS中模擬的類定義語法,代碼中Class是一個(gè)自定義函數(shù),它接受兩個(gè)參數(shù),第一個(gè)參數(shù)是類名、第二個(gè)參數(shù)是一個(gè)JSON用來一個(gè)對(duì)象的模板。在這個(gè)JSON對(duì)象中其中字段 "extend",,"initialize","static" 為一些預(yù)定義關(guān)鍵字,所表示的意義與基于類的傳統(tǒng)OO語言相似。字段accessabe用來描述一個(gè)對(duì)象成員的可訪問性,取值為("private","protected","public")在Class函數(shù)中會(huì)對(duì)這些關(guān)鍵字進(jìn)行特殊處理,使其所修飾的成員具有相應(yīng)的訪問權(quán)限。
復(fù)制代碼 代碼如下:
Class("Person" ,{
//繼承
extend: Animal,
//構(gòu)造函數(shù)
initialize:function(name,sex){
this.name = name;
this.sex = sex;
Person.count++;
},
//靜態(tài)成員
static:{
count: {
accessabe:"private",
value: ""
}
},
//實(shí)例成員
age: {//私有屬性成員
accessabe:"private",
value:0
},
//公用屬性
name: {
accessabe:"public",
value:""
},
sex:{
accessabe:"public",
value: ""
},
//方法
sleep: {//受保護(hù)方法
accessabe:"protected",
value: function(){
}
},
say: {//公用方法
accessabe:"public",
value: function(){
retun (this.age-1)
}
}
});
//調(diào)用
var xiaom = new Person("小明","男");
xiaom.age //私有屬性不能訪問
xiaom.sleep() //受保護(hù)方法不能訪問
xiaom.say() //公用方法可以訪問
您可能感興趣的文章:
- 詳解ES6 Symbol 的用途
- Javascript ES6中數(shù)據(jù)類型Symbol的使用詳解
- ES6概念 Symbol toString()方法
- ES6中Symbol類型用法實(shí)例詳解
- ES6新特性之Symbol類型用法分析
- ES6概念 Symbol.keyFor()方法
- es6 symbol的實(shí)現(xiàn)方法示例
- ES6中Symbol、Set和Map用法詳解
- ES6 Symbol數(shù)據(jù)類型的應(yīng)用實(shí)例分析
- JavaScript 私有成員分析
- JavaScript 面向?qū)ο蟮闹接谐蓡T和公開成員
- ES5 模擬 ES6 的 Symbol 實(shí)現(xiàn)私有成員功能示例
相關(guān)文章
ASP.NET jquery ajax傳遞參數(shù)的實(shí)例
下面小編就為大家?guī)硪黄狝SP.NET jquery ajax傳遞參數(shù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11javascript表單驗(yàn)證 - Parsley.js使用和配置
大家還記得我們?cè)?jīng)介紹過的表單驗(yàn)證jquery插件jquery.validationEngine吧;天介紹的Parsley同樣也可以幫助你只使用簡單的配置即可實(shí)現(xiàn)表單驗(yàn)證功能,基于它的強(qiáng)大DOM-API,感興趣的你可以不要錯(cuò)過了哦2013-01-01