新聞中心
小編給大家分享一下如何體現(xiàn)js繼承關(guān)系,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過10多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對(duì)網(wǎng)站進(jìn)行網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
JS作為面向?qū)ο蟮娜躅愋驼Z言,繼承也是其非常強(qiáng)大的特性之一。那么如何在JS中實(shí)現(xiàn)繼承呢?讓我們拭目以待。
js里常用的如下兩種繼承方式:
原型鏈繼承(對(duì)象間的繼承)
類式繼承(構(gòu)造函數(shù)間的繼承)
由于js不像java那樣是真正面向?qū)ο蟮恼Z言,js是基于對(duì)象的,它沒有類的概念。所以,要想實(shí)現(xiàn)繼承,可以用js的原型prototype機(jī)制或者用apply和call方法去實(shí)現(xiàn)
在面向?qū)ο蟮恼Z言中,我們使用類來創(chuàng)建一個(gè)自定義對(duì)象。然而js中所有事物都是對(duì)象,那么用什么辦法來創(chuàng)建自定義對(duì)象呢?這就需要用到j(luò)s的原型:
我們可以簡單的把prototype看做是一個(gè)模版,新創(chuàng)建的自定義對(duì)象都是這個(gè)模版(prototype)的一個(gè)拷貝 (實(shí)際上不是拷貝而是鏈接,只不過這種鏈接是不可見,新實(shí)例化的對(duì)象內(nèi)部有一個(gè)看不見的__Proto__指針,指向原型對(duì)象)。
js可以通過構(gòu)造函數(shù)和原型的方式模擬實(shí)現(xiàn)類的功能。 另外,js類式繼承的實(shí)現(xiàn)也是依靠原型鏈來實(shí)現(xiàn)的。
原型式繼承與類式繼承
類式繼承是在子類型構(gòu)造函數(shù)的內(nèi)部調(diào)用超類型的構(gòu)造函數(shù)。
嚴(yán)格的類式繼承并不是很常見,一般都是組合著用:
function Super(){ this.colors=["red","blue"]; } function Sub(){ Super.call(this); }
原型式繼承是借助已有的對(duì)象創(chuàng)建新的對(duì)象,將子類的原型指向父類,就相當(dāng)于加入了父類這條原型鏈
原型鏈繼承
為了讓子類繼承父類的屬性(也包括方法),首先需要定義一個(gè)構(gòu)造函數(shù)。然后,將父類的新實(shí)例賦值給構(gòu)造函數(shù)的原型。代碼如下:
以上原型鏈繼承還缺少一環(huán),那就是Object,所有的構(gòu)造函數(shù)都繼承自O(shè)bject。而繼承Object是自動(dòng)完成的,并不需要我們自己手動(dòng)繼承,那么他們的從屬關(guān)系是怎樣的呢?
確定原型和實(shí)例的關(guān)系
可以通過兩種方式來確定原型和實(shí)例之間的關(guān)系。操作符instanceof和isPrototypeof()方法:
alert(brother instanceof Object)//true alert(test instanceof Brother);//false,test 是brother的超類 alert(brother instanceof Child);//true alert(brother instanceof Parent);//true
只要是原型鏈中出現(xiàn)過的原型,都可以說是該原型鏈派生的實(shí)例的原型,因此,isPrototypeof()方法也會(huì)返回true。
看完了這篇文章,相信你對(duì)如何體現(xiàn)js繼承關(guān)系有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
名稱欄目:如何體現(xiàn)js繼承關(guān)系
新聞來源:http://fisionsoft.com.cn/article/geeoos.html