日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

js基礎:Javascript中公有成員,私有成員,靜態成員

admin
2010年8月18日 10:31 本文熱度 5509
一、實現類的公有成員:

1)       定義的成員屬性和方法能夠被任何實例訪問,對任何的實例都是公開的,成為公有成員。在javascript中,一般的屬性和方法的定義都是公有的,請看下面的例子:function class1(){

this.prop=1;

this.showProp();

}

 

//創建一個類的實例

var obj1=new class1();

class1.prototype.showProp=function(){

    alert(this.prop);

}

2)       以上class1中的屬性,方法都是公共的,屬于任何實例對象。

二、實現類的私有成員:

1)       私有成員即是在內部實現中可以共享的成員,但是并不對外公開。Javascript中并沒有特殊的機制來實現私有成員,但是可以用一些技巧來實現這個功能。

2)       這個技巧主要是通過變量的作用域性質來實現的,在Javascript中,一個函數內部定義的變量稱為局部變量,該變量不是被函數外的程序訪問,卻可以被函數內部定義的嵌套函數訪問。在實現私有成員的過程中,正是利用了這一性質。

3)       在類的構造函數中可以為類添加成員,通過這種方式來定義類的成員,實際上共享了構造函數內部定義的局部變量,這些變量就可以看作為類的私有成員,例如:

function class1(){

    var pp=”this is a private property”; //私有屬性成員pp,

    function pm(){                         //私有方法成員,顯示pp的值

    alert(pp);

}

this.method1=function(){ //在公有成員中改變私有屬性的值

    pp=”pp has bean changed”;

}

this.method2=function(){

    pm();         //在公有成員中調用私有方法。

}

}

var obj1=new class1();

obj1.method1();

obj2.method2();

4)       這樣,就實現了私有屬性pp和私有方法pm。運行完class1以后,盡管看上去pp和pm這些局部變量應該隨即消失,但實際上因為class1是通過new來運行的,它所屬的對象還沒有消失,所以仍然可以通過公開成員來對他們進行操作。

5)       要使用私有成員,是以犧牲代碼的可讀性為代價的。而且這種實現更多的是一樣Javascript技巧,看上去也比較勉強,因為它并不是語言本身具有的機制。但種利用變量作用域性質的技巧,卻是值得借鑒的。

三、實現類的靜態成員:

1)       和私有成員的勉強相比,靜態成員顯得“正統”的多。靜態成員屬于一個類的成員,它可以通過“類名.靜態成員名”的方式訪問。在javascript中,可以給一個函數對象直接添加成員實現靜態成員,因為函數也是一個對象,所以對象的相關操作,對函數同樣適用。例如:

function class1(){//構造函數

}

//靜態屬性

class1.staticProperty=”sample”;

//靜態方法

class1.staticMethod=function(){

    alert(class1.staticProperty);

}

//調用靜態方法

class1.staticMethod();

2)       通過上面的代碼,就為類class1添加了一個靜態屬性和靜態方法,并且在靜態方法中引用了該類的靜態屬性。

3)       如果要給每個函數對象對添加通用的靜態方法,還可以通過函數對象所對應的類function來實現,例如:

//給類Function添加原型方法:showArgsCount

Function.prototype.showArgsCount=function(){

    alert(this.length);  //顯示函數定義的形參的個數

}

function class1(a){

    //定義一個類

}

//調用通過Function的property定義的類的靜態方法showArgsCount

class1.showArgsCount();

4)       由此可見,通過Function的property原型對象,可以給任何函數都加上通用的靜態成員,這在實際中可起到很大的作用,比如在著名的prototype-1.3.1.js框架中,就給所有的函數定義了以下兩個方法:

//將函數做為一個對象的方法運行

Function.prototype.bind=function(object){

    var _method=this;

    return function(){

    _method.apply(object,arguments);

}

}

//將函數作為事件鑒聽器

Function.prototype.bindAsEventListener=function(object){

    var _method=this;

    return function(event){

    _mehtod.call(object,event||window.event);

}

}

該文章在 2010/8/18 10:31:01 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 在线天堂新版最新版在线8 中文字幕精品一区二区精品 | 日韩国产欧 | 精品亚洲a| 泰剧tv网| 国产一区二区视频在线播放 | 蝌蚪一个释放的网站 | 国产一区二区精品一区二区 | 国产亚洲一区在线 | 日韩精品一区二区三区在线视频放 | 成人国产 | 麻婆豆传 | 欧美日韩精品中文字幕 | 国产精品欧美亚洲韩国日本 | 真人做爰欧美aaaaa | 国产精品成人免费视频99 | 中文字幕人成乱码熟女69 | 精品国产第 | 国产日韩高清一区二区三区 | 忘忧草日本高清频道 | 国产又粗又长又黄又猛又爽视 | 精品国产高清自在线看 | 色一情一伦一区二区三 | 超薄肉色丝袜一区二区 | 91青青青 | 中文日产无乱码v在线观 | 亚洲小说第一区 | 亚洲一区二区三区免费视频 | 欧美性狂猛xxxxxbbbbb | 日韩在线一区二区三区免费视频 | 免费观看 | 成人免费 | 免费人成视在线观看不卡 | 国产中文字幕玖玖观看互动交流 | 精品欧美视频第二页在线观看 | 2025国产手机在线精品 | 国产全黄三级国产全黄三级书 | 在线观看精品国产福利片app | 99视频精品国 | 樱桃视频影 | 最新欧美精品一区二区三 | 国产又爽又粗又猛的视频 |