js 繼承概述

來源:互聯網
上載者:User

標籤:tor   下一步   建立對象   bsp   功能   實現繼承   prot   div   閉包概念   

       上文講述過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中的各個屬性。


   

js 繼承概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.