亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

《javascript設(shè)計(jì)模式》學(xué)習(xí)筆記二:Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)繼承用法分析

瀏覽:92日期:2023-11-06 10:46:34

本文實(shí)例講述了Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)繼承用法。分享給大家供大家參考,具體如下:

1.關(guān)于繼承:

百度百科對(duì)繼承的解釋是:繼承是指一個(gè)對(duì)象直接使用另一對(duì)象的屬性和方法。

(話(huà)說(shuō)百科對(duì)于計(jì)算機(jī)概念的繼承的解釋也太簡(jiǎn)略了)

繼承的好處,優(yōu)點(diǎn)學(xué)過(guò)面向?qū)ο蟮耐瑢W(xué)都知道,就不贅述了。

javascript中的繼承有三種(不同的書(shū)上對(duì)這三中的名稱(chēng)翻譯都不一樣,我按照我的理解來(lái)命名吧):

a.構(gòu)造函數(shù)繼承(類(lèi)式繼承,組合繼承,偽經(jīng)典繼承) b.原型繼承 c.原型賦值(遍歷)繼承(寄生式繼承)2.構(gòu)造函數(shù)繼承

所謂的構(gòu)造函數(shù)繼承,就是通過(guò)創(chuàng)建一個(gè)新對(duì)象,調(diào)用父類(lèi)構(gòu)造函數(shù)實(shí)現(xiàn)的一種繼承;(知識(shí)點(diǎn):函數(shù)對(duì)象的原型會(huì)有一個(gè)屬性叫constructor, constructor實(shí)際指向的是這個(gè)函數(shù))

function person(name){ this.name = name;}extend(author, person);function extend(subclass, superclass){ var f= function(){}; f.prototype = superclass.prototype;//f.prototype.constructor = superclass subclass.prototype = new f();//這里調(diào)用的實(shí)際上是superclass(),這樣subclass.prototype.construcor = superclass subclass.prototype.constructor = subclass;//將subclass的構(gòu)造函數(shù)改寫(xiě)為正常的自身的構(gòu)造函數(shù)}3.原型式繼承

我們知道javascript在引用一個(gè)對(duì)象的屬性時(shí),首先會(huì)去讀這個(gè)對(duì)象是否有這個(gè)屬性,如果沒(méi)有會(huì)繼續(xù)看這個(gè)對(duì)象的原型是否有這個(gè)屬性;

var person ={}var author = clone(person);function clone(obj){ function F(){}; F.prototype = obj; return new F;}

clone函數(shù)的作用就是把父類(lèi)的所有成員都給了新對(duì)象的prototype,成為了新對(duì)象prototype的成員,因此子類(lèi)在引用一個(gè)父類(lèi)屬性時(shí),都能在prototype中找到,但是這種方式繼承是的所有克隆出來(lái)的對(duì)象都共享每個(gè)屬性和方法的唯一實(shí)例(因?yàn)槎际峭ㄟ^(guò)原型讀取),只有在直接設(shè)置了某個(gè)克隆出來(lái)的對(duì)象的屬性和方法(變?yōu)閷?duì)象獨(dú)立屬性),情況才會(huì)有變化。

4.原型賦值(遍歷)繼承

這種賦值比原型賦值好的一點(diǎn)在于它控制繼承的范圍

var person = {};augment(author, person);//參數(shù)最少兩個(gè),超過(guò)兩個(gè)則表示指定要繼承的成員function augment(receivingclass, givingclass){ if(arguments[2]){ for(var i=2;i<arguments.length;i++){ receivingclass.prototype[arguments[i]] = givingclass.prototype[arguments[i]]; } } else{ for(methodname in givingclass.prototype){ receivingclass.prototype[methodname] = givingclass.prototype[methodname]; } }}

這種方式比較適用于var obj這樣定義的對(duì)象,而不是用函數(shù)來(lái)定義的對(duì)象,如果使用函數(shù)定義的對(duì)象,同時(shí)又要指定繼承的成員,別忘了constructor

感興趣的朋友可以使用在線(xiàn)HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 欧美日韩国产高清一区二区三区 | 亚洲精品网站在线 | 美日韩一级 | 国产一级做a爱免费观看 | 免费黄色视屏 | 精品成人资源在线观看 | 欧美卡1卡2卡三卡网站入口 | 免费a黄色 | 成熟女性毛茸茸撒尿厕所 | 国产精品亚洲综合一区在线观看 | 九九爱www高清免费人成 | 特黄特a级特别特级特毛片 特黄特色一级aa毛片免费观看 | 精品视频在线观看你懂的一区 | 国产男女性做爽歪歪爱视频 | 成人看片黄a在线观看 | 久久精品九九 | 国产v片在线播放免费观 | 一级一级一级一级毛片 | 亚洲精品在线免费观看视频 | 国产精品一区在线免费观看 | 国产精品综合久成人 | 亚洲美女在线观看亚洲美女 | 国产亚洲高清在线精品99 | 久久人体做爰大胆图片 | 青青草99热久久 | 国产福利微拍精品一区二区 | 国产欧美日韩另类一区乌克兰 | 久久青草免费91观看 | 亚洲一区亚洲二区亚洲三区 | 欧美区一区 | 国产免费怕怕免费视频观看 | 男女性高清爱潮视频免费观看 | 日韩欧美一级毛片精品6 | 国产色啪午夜免费视频 | 青草国产在线视频 | 午夜久久久精品 | 日韩不卡毛片 | 日本 wwwwwxxxxx | 精品视频一区二区观看 | 亚洲成在人网站天堂一区二区 | 国产页|