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