<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-295  評論-26  文章-1  trackbacks-0
    javascript的繼承機制并不是明確規(guī)定的,而是通過模仿實現(xiàn)的,意味著繼承不是由解釋程序處理,開發(fā)者有權(quán)決定最適合的繼承方式. 下面我給出幾種常用的方法: 1 .對象冒充 原理: 構(gòu)造函數(shù)使用this關(guān)鍵字給所有屬性和方法賦值, 因為構(gòu)造函數(shù)只是一個函數(shù),所以可以使ClassA的構(gòu)造函數(shù)成為classB的方法,然后調(diào)用它.這樣classB就會收到classA的構(gòu)造函數(shù)中定義的屬性和方法.例子: function classA(name) { this.name=name; this.showName=function(){alert(this.name);} } function classB(name) { this.newMethod = classA; this.newMethod(name); } obj = new classA("hero"); objB = new classB("dby"); obj.showName(); // print hero objB.showName(); // print dby 說明classB 繼承了classA的方法. 對象冒充可以實現(xiàn)多重繼承 例如 function classz(){ this.newMethod = classX; this.newMethod(); delete this.newMethod; this.newMethod=classY; this.newMethod(): delete this.newMethod; } 但是如果classX和classY有相同的屬性或者方法,classY具有高優(yōu)先級. 2.call()方法 call方法使與經(jīng)典的對象冒充法就相近的方法,它的第一個參數(shù)用作this的對象,其他參數(shù)都直接傳遞給函數(shù)自身. function sayName(perfix) { alert(perfix+this.name); } obj= new Object(); obj.name="hero"; sayName.call(obj,"hello," ); function classA(name) { this.name=name; this.showName=function(){alert(this.name);}; } function classB(name) { classA.call(this,name); } objB = new classB("bing"); objB.showName();////說明classB繼承classA的showName方法 3.apply()方法 aplly()方法有2個參數(shù),一個用作this對象,一個使傳遞給函數(shù)的參數(shù)數(shù)組. function sayName(perfix) { alert(perfix+this.name); } obj= new Object(); obj.name="hero"; sayName.aplly(obj,new Array("hello,") ); 4. 原型鏈 prototype對象的任何屬性和方法都會被傳遞給對應(yīng)類的所有實例,原型鏈就是用這種方式來顯現(xiàn)繼承. function classA (){} classA.prototype.name="hero"; classA.prototype.showName=function(){alert(this.name)} function classB(){} classB.prototype=new classA(); objb = new classB() objb.showName();//print hero 說明b繼承了a的方法 這里需要注意 調(diào)用classA的構(gòu)造函數(shù)時,沒有給它傳遞參數(shù),這是原型鏈的標準做法,確保函數(shù)的構(gòu)造函數(shù)沒有任何參數(shù). 并且 子類的所有屬性和方法,必須出現(xiàn)在prototype屬性被賦值后,應(yīng)為在它之前賦的值會被刪除.因為對象的prototype屬性被替換成了新對象,添加了新方法的原始對象將被銷毀. 5 混和方式 就是用冒充方式 定義構(gòu)造函數(shù)屬性,用原型法定義對象方法. function classA(name) { this.name=name; } classA.prototype.showName=function(){alert(this.name)} function classB(name) { classA.call(this,name); } classB.prototype = new classA(); classB.prototype.showName1=function(){alert(this.name+"*****");}; obj = new classB("hero"); obj.showName(); obj.showName1(); 在classB的構(gòu)造函數(shù)中通過調(diào)用call方法 繼承classA中的name屬性,用原型鏈來繼承classA的showName方法.

    大盤預(yù)測 國富論
    posted on 2009-07-16 13:47 華夢行 閱讀(117) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 狠狠综合亚洲综合亚洲色| 亚洲综合日韩中文字幕v在线| 亚洲人成网站看在线播放| 午夜网站在线观看免费完整高清观看| 亚洲婷婷国产精品电影人久久| 国产综合成人亚洲区| 国产精品99久久免费| 国产成人精品日本亚洲语音| 宅男666在线永久免费观看| 色欲aⅴ亚洲情无码AV蜜桃| 日韩精品亚洲专区在线观看| 免费国产在线精品一区| 国产亚洲日韩一区二区三区| 香蕉视频在线免费看| 国产亚洲AV无码AV男人的天堂| a级成人毛片免费视频高清| 久久精品亚洲综合| 9420免费高清在线视频| 亚洲另类古典武侠| 男男AV纯肉无码免费播放无码| 亚洲精品精华液一区二区| 免费一级毛片在线播放不收费| 国产精品hd免费观看| 亚洲午夜精品久久久久久人妖| 欧洲乱码伦视频免费| 免费观看亚洲人成网站| 伊人久久大香线蕉亚洲五月天| 中文字幕久精品免费视频| 亚洲国产精品综合久久2007| 日韩毛片免费在线观看| 久久99精品免费一区二区| 亚洲欧洲视频在线观看| 国产免费牲交视频| a级毛片100部免费观看| 国产精品亚洲一区二区麻豆| 少妇亚洲免费精品| 久久国产免费观看精品3| 久久精品国产亚洲AV未满十八| 亚洲精品无码成人片久久| 国产一卡二卡四卡免费| 污视频网站在线观看免费|