摘要:一些面向?qū)ο笳Z言中支持多繼承,在也能實(shí)現(xiàn)多繼承,但是有一些局限,因?yàn)樵谥欣^承是依賴原型鏈實(shí)現(xiàn)的,只有一條原型鏈,所以理論上是不能繼承多個(gè)父類的。從第一個(gè)參數(shù)起為被繼承的對(duì)象獲取參數(shù)長度緩存參數(shù)對(duì)象緩存當(dāng)前對(duì)象遍歷被繼承對(duì)象中的屬性
一些面向?qū)ο笳Z言中支持多繼承,在JavaScript也能實(shí)現(xiàn)多繼承,但是有一些局限,因?yàn)樵贘avaScript中繼承是依賴原型prototype鏈實(shí)現(xiàn)的,只有一條原型鏈,所以理論上是不能繼承多個(gè)父類的。但是JavaScript很靈活,通過一些技巧方法可以繼承多個(gè)對(duì)象的屬性來實(shí)現(xiàn)類似的多繼承。
單繼承繼承單對(duì)象的extend方法:
//單繼承 屬性復(fù)制 var extend = function (target,source) { //遍歷源對(duì)象中的屬性 for(var property in source){ //將源對(duì)象中的屬性復(fù)制到目標(biāo)對(duì)象中 target[property] = source[property]; } //返回目標(biāo)對(duì)象 return target; };
單繼承的測試代碼
//測試代碼 var book ={ name:"javascript", alike:["css","html5","js"] } var anotherBook = { color :"blue" } extend(anotherBook,book); console.log(anotherBook.name);//javascript console.log(anotherBook.alike);//[ "css", "html5", "js" ] anotherBook.alike.push("ajax"); anotherBook.name = "設(shè)計(jì)模式"; console.log(anotherBook.name);//設(shè)計(jì)模式 console.log(anotherBook.alike);//[ "css", "html5", "js", "ajax" ] console.log(book.name);//javascript console.log(book.alike);//[ "css", "html5", "js", "ajax" ]
上面的方法可以實(shí)現(xiàn)對(duì)一個(gè)對(duì)象屬性的復(fù)制繼承,當(dāng)傳遞多個(gè)對(duì)象時(shí),即可實(shí)現(xiàn)多繼承。
多繼承//多繼承 屬性復(fù)制 var mix = function () { var i =1,//從第二個(gè)參數(shù)起為被繼承的對(duì)象 len =arguments.length,//獲取參數(shù)長度 target = arguments[0], //第一個(gè)對(duì)象為目標(biāo)對(duì)象 arg;//緩存參數(shù)對(duì)象 for(;imix方法的作用是將傳入的多個(gè)對(duì)象的屬性復(fù)制到源對(duì)象中,這樣即可實(shí)現(xiàn)對(duì)多個(gè)對(duì)象的屬性的繼承。另外當(dāng)使用的時(shí)候需要傳入目標(biāo)對(duì)象(第一個(gè)參數(shù)-需要繼承的對(duì)象)時(shí),可以將它綁定到原生對(duì)象Object上,這樣所有的對(duì)象都可以擁有這個(gè)方法。這樣就可以在對(duì)象上直接調(diào)用。
Object.property.mix = function () { var i=0,//從第一個(gè)參數(shù)起為被繼承的對(duì)象 len =arguments.length,//獲取參數(shù)長度 arg;//緩存參數(shù)對(duì)象 for(;i
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108535.html
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來。注意中,對(duì)象一定是通過類的實(shí)例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:原文鏈接一什么是非構(gòu)造函數(shù)的繼承比如,現(xiàn)在有一個(gè)對(duì)象,叫做中國人。通過函數(shù),繼承了。中國北京上海香港廈門北京上海香港廈門北京上海香港這時(shí),父對(duì)象就不會(huì)受到影響了。目前,庫使用的就是這種繼承方法。 原文鏈接 一、什么是非構(gòu)造函數(shù)的繼承? 比如,現(xiàn)在有一個(gè)對(duì)象,叫做中國人。 var Chinese = { nation: 中國 } 還有一個(gè)對(duì)象,叫做醫(yī)生。 var Doctor = {...
摘要:對(duì)象在中,除了數(shù)字字符串布爾值這幾個(gè)簡單類型外,其他的都是對(duì)象。那么在函數(shù)對(duì)象中,這兩個(gè)屬性的有什么區(qū)別呢表示該函數(shù)對(duì)象的原型表示使用來執(zhí)行該函數(shù)時(shí)這種函數(shù)一般成為構(gòu)造函數(shù),后面會(huì)講解,新創(chuàng)建的對(duì)象的原型。這時(shí)的函數(shù)通常稱為構(gòu)造函數(shù)。。 本文原發(fā)于我的個(gè)人博客,經(jīng)多次修改后發(fā)到sf上。本文仍在不斷修改中,最新版請(qǐng)?jiān)L問個(gè)人博客。 最近工作一直在用nodejs做開發(fā),有了nodejs,...
閱讀 770·2019-08-29 16:32
閱讀 841·2019-08-29 12:31
閱讀 3216·2019-08-26 18:26
閱讀 3159·2019-08-26 12:20
閱讀 1736·2019-08-26 12:00
閱讀 3010·2019-08-26 10:58
閱讀 2815·2019-08-23 17:08
閱讀 2314·2019-08-23 16:32