js 繼承概述

來源:互聯網
上載者:User

標籤:style   blog   class   code   java   c   

       上文講述過js實現物件導向,一定是可以實現繼承的效果的。雖然說很多的js架構都協助我們實現了繼承的功能,或者說在日常的工作和學習中我們壓根就用不到js的繼承,但是我們還是需要瞭解一下js中繼承,以方便我們閱讀架構中的繼承是如何?的。在下面的文章中我會給大家類比一下js中繼承的實現。

 先來看一下下面建立對象的一種方式:

/* * 對象工廠 */function objectFactory(jsonObj){function objectEntity(){}if(typeof jsonObj == "object"){for(var index in jsonObj){objectEntity.prototype[index] = jsonObj[index]; }}return objectEntity;}var Person = objectFactory({pname:‘andy‘,sex:‘man‘});var person = new Person();console.info(person+"--"+Person);// [object Object] -- function objectEntity(){}console.info(person.pname);console.info(person.sex); 
objectFactory接受的是一個json對象jsonObj作為參數,在這個函數內部建立了一個函數objectEntity,然後就判斷輸入的jsonObj
是否是物件類型,如果是那麼就遍曆這個json對象,然後把遍曆出來的每個值都附加objectEntity的原型上面,請注意,下面返回的
就是objectEntity(可以參考上節中的js閉包概念),也就是說Person指向的就是objectEntity,那麼Person的原型上面自然的就有了
pname,sex等屬性。


如果上述能夠理解的話,我們就可以進行下一步的繼承的實現(類似於很多架構中的繼承底層實現)
/* * 繼承 */function inherit(obj,prop){function f(){}if(typeof obj=="object"){for(var index in obj){f.prototype[index] = obj[index]; }}else{f.prototype = obj.prototype;for(var index in prop){f.prototype[index] = prop[index]; }}return f;}var Animal = inherit({type:‘animal‘,name:‘animal‘,jump:‘jump‘});var Dog = inherit(Animal,{name:‘i am a dog‘,jump:‘dog jumpping‘});var dog = new Dog;console.info(dog.type);console.info(dog.name);

在這裡就不再對inherit這個函數進行詳細的解釋,讀者可以自行分析,在這裡Dog 繼承了Animal,那麼Dog建立出來的對象dog自然的就有了Animal中的各個屬性。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.