重載:由于Javascrip " /> 在线自拍综合亚洲欧美,欧美另类老女人,欧美色图天堂网

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

javascript 面向對象編程基礎 多態

Javascript已經可以模擬出面向對象的封裝和繼承特性,但是不幸的是Javascript對多態特性的支持非常弱!其它面向對象語言的多態一般都由方法重載和虛方法來實現多態,Javascript也通過這兩種途徑來實現!

重載:由于Javascript是弱類型的語言,而且又支持可變參數,當我們定義重載方法的時候,解釋器無法通過參數類型和參數個數來區分不同的重載方法,因此方法重載是不被支持的!當先后定義了同名的方法的時候,后定義的方法會覆蓋先定義的方法!

既然解釋器無法分辨重載方法,那就手動區分不同的方法:
復制代碼 代碼如下:
var MyClass=function(){
var AddNum=function(a,b){
return a+b;
}
var AddString=function(a,b){
return "I am here"+a+b;
}
this.Add=function(a,b){
if(typeof(a)=="number")
return AddNum(a,b);
else
return AddString(a,b);
}
}
var MyObj = new MyClass();
var X = MyObj.Add(5,6);
var Y = MyObj.Add("A","FFFFFF");
alert(X); //結果:11
alert(Y); //結果:I am hereAFFFFFF

虛方法:
復制代碼 代碼如下:
function BaseClass(){
this.Hello=function(){
return this.Say();
}
}
function MyClassA(){
this.Say=function(){
return "Hello";
}
}
function MyClassB(){
this.Say=function(){
return "This is MyClassB";
}
}
MyClassA.prototype = new BaseClass();
MyClassB.prototype = new BaseClass();
var ObjA = new MyClassA();
var XX = ObjA.Hello();
alert(XX); //結果:Hello
var ObjB = new MyClassB();
var YY = ObjB.Hello();
alert(YY); //結果:This is MyClassB

由于Javascript解釋執行的特性,因此可以再基類中調用將要在派生類中定義的方法,那么這個基類方法就相當于虛方法,可以實現模擬多態!
js的重載和重寫(覆寫):
重載的意思是,“同一個名字的函數(注意這里包括函數)或方法可以有多個實現,它們依靠參數的類型和(或)參數的個數來區分識別”。而重寫(覆蓋)的意思是,“子類中可以定義與父類中同名,并且參數類型和個數也相同的方法,這些方法的定義后,在子類的實例化對象中,父類中繼承的這些同名方法將被隱藏”。重載的英文是overload,覆蓋的英文是override。好了,概念介紹到這里,你猜到我要說什么了嗎?嘿嘿,Code is cheap.看重載代碼:
復制代碼 代碼如下:
// 通過函數的arguments屬性實現重載
function add() {
var sum = 0 ;
for ( var i = 0 ; i < arguments.length; i ++ ) {
sum += arguments[i];
}
return sum;
}
function test() {
alert(add());
alert(add( 1 , 2 ));
alert(add( 1 , 2 , 3 ));
}

通過代碼運行結果,這樣就實現了任意多個參數加法函數的重載了。當然,你還可以在函數中通過 instanceof 或者 constructor 來判斷每個參數的類型,來決定后面執行什么操作,實現更為復雜的函數或方法重載。總之,Javascript 的重載,是在函數中由用戶自己通過操作 arguments 這個屬性來實現的。關于arguments的特性,前面我已經做了簡單介紹,參考拙文:http://blog.csdn.NET/zhanglingdll_39/archive/2009/08/20/4465670.ASPx 。
下面重點理解js重寫的實現:
// 為類添加靜態方法inherit表示繼承于某類
Function.prototype.inherit = function (baseClass) {
for ( var p in baseClass.prototype) {
this .prototype[p] = baseClass.prototype[p];
}
}
// js實現重寫
function parentClass() { // 父類
}
parentClass.prototype.method = function () {
alert( " parentClass method " );
}
function subClass() { // 子類
}
// 復制代碼 代碼如下:
下面這一句和subClass.prototype = new parentClass();等價
subClass.inherit(parentClass);
// subClass.prototype.method = function() { // 子類重寫了父類的方法 -- 去掉注釋運行試試看
// alert("subClass method");
// }
function test() {
var obj = new subClass();
obj.method();
}
這樣,子類中定義的method 就覆蓋了從父類中繼承來的method 方法了。這是你可能會問,如何在子類中調用父類的method方法呢?好的,看實現如下:
// 為類添加靜態方法inherit表示繼承于某類
Function.prototype.inherit = function (baseClass) {
for ( var p in baseClass.prototype) {
this .prototype[p] = baseClass.prototype[p];
}
}
/* 參考文章:http://menjoy.Javaeye.com/blog/127847 */
// js實現重寫
function parentClass() {
this .method = function () {
alert( " parentClass method " );
}
}
function subClass() {
var method = this .method;
this .method = function () {
method.call( this );
alert( " subClass method " );
}
}
subClass.prototype = new parentClass();
// subClass.inherit(parentClass); //這一句貌似和上一句subClass.prototype = new parentClass();等價,其實呢????(注釋上一行,運行這一行看看)
subClass.prototype.constructor = subClass;
function test() {
var obj = new subClass();
obj.method();
}

好了,關于多態的介紹就到這里。js面向對象編程猶如浩瀚海洋廣闊無邊,我這三篇參考別人的文章寫出來的js面向對象基礎只能當作入門者學習的參考。學無止境,參考了網上幾篇老大們的牛文,深知自身技術的淺薄,對于已經超越了解階段的讀者,還是看看園子里高人的技術文章吧。我這里要先拜謝園子里的高人了。

JavaScript技術javascript 面向對象編程基礎 多態,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 四虎免费影院 | 亚洲AV无码国产精品色午夜情 | 色偷偷网站 | 久久青青无码AV亚洲黑人 | 俄罗斯大白屁股 | 爱豆剧果冻传媒在线播放 | 国产成人久久AV免费看澳门 | 午夜爽喷水无码成人18禁三级 | 男污女XO猛烈的动态图 | 御姐被吸奶 | 13小箩利洗澡无码视频APP | 好湿好滑好硬好爽好深视频 | 国产成人精品在视频 | 妻子+免费观看完整 | 99久久e免费热视频百度 | 桃花在线视频观看免费 | 国产在线精品一区二区在线看 | 白丝高中生被c爽哭 | 被同桌摸出水来了好爽的视频 | 午夜婷婷精品午夜无码A片影院 | 精品无码久久久久久国产百度 | WWW久久只有这里有精品 | 欧美亚洲精品真实在线 | 国产激情视频在线观看 | 国产av免费观看日本 | 久草精品视频 | 神马伦理不卡午夜电影 | 日本在线高清不卡免费播放 | 成人免费肉动漫无遮网站 | 日本久久精品视频 | 99热久久精品国产一区二区 | 性一交一无一伦一精一品 | 校花被扒衣吸乳羞羞漫画 | 日本三级按摩推拿按摩 | 久久热在线视频精品店 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 色综合久久五月 | md2.pud 麻豆传媒官网 | 久久中文字幕无线观看 | 精品无码久久久久久国产百度 | 二色AV天堂在线 |