亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

關(guān)于javascript類特性的一些總結(jié)

sunsmell / 1028人閱讀

摘要:被克隆的對(duì)象稱之為新對(duì)象的原型,新對(duì)象保存一個(gè)指向其原型的引用。一個(gè)對(duì)象是如何與其原型聯(lián)系起來的呢答對(duì)象的屬性指向其構(gòu)造函數(shù)的。如何實(shí)現(xiàn)繼承呢使構(gòu)造函數(shù)的等于另一個(gè)構(gòu)造函數(shù)的一個(gè)實(shí)例這樣就使得繼承于。

眾所周知,在javascript這門動(dòng)態(tài)類型語(yǔ)言中,是不存在如傳統(tǒng)靜態(tài)類型語(yǔ)言如c++或java中對(duì)類的支持的。后者是天生為面向?qū)ο缶幊潭O(shè)計(jì),其中涉及的一些概念如繼承、多態(tài)、函數(shù)重載在js中都不是被原生實(shí)現(xiàn)的。

然而,js也是可以實(shí)現(xiàn)面向?qū)ο缶幊痰?,一切都?xì)w功于其原型編程范形特性。也就是說,一切數(shù)據(jù)類型都可以被看做是對(duì)象(js中還存在Number,String,Boolean這樣的基本數(shù)據(jù)類型),要產(chǎn)生一個(gè)對(duì)象,不是通過用類進(jìn)行實(shí)例化,而是克隆另一個(gè)對(duì)象。被克隆的對(duì)象稱之為新對(duì)象的原型,新對(duì)象保存一個(gè)指向其原型的引用。當(dāng)調(diào)用新對(duì)象中的某個(gè)屬性時(shí),如果不存在,則會(huì)順著原型鏈一直往上查找,直達(dá)Object.prototype這個(gè)js中的根對(duì)象為止,如不存在則為undefined。

注:js中的所有對(duì)象都是直接或者間接克隆Object.prototype, 這是一個(gè)空對(duì)象。

那么如何克隆/產(chǎn)生一個(gè)對(duì)象呢?
答: 在js中可以通過new func()的形式,這里的func是一個(gè)function,但這里并不作為普通的函數(shù)調(diào)用,而是作為一個(gè)構(gòu)造器。而這個(gè)函數(shù)就是通過這個(gè)函數(shù)構(gòu)造出來的對(duì)象的構(gòu)造函數(shù)。

一個(gè)對(duì)象是如何與其原型聯(lián)系起來的呢?
答:對(duì)象的__proto__屬性指向其構(gòu)造函數(shù)的prototype。
例如,var obj = new Object(); 那么就存在 obj.__porto__ === Object.prototype。

如何實(shí)現(xiàn)繼承呢?

(1)使構(gòu)造函數(shù)A的prototype等于另一個(gè)構(gòu)造函數(shù)B的一個(gè)實(shí)例(A.prototype = new B() ),這樣就使得A繼承于B。

(2)使用apply方法,使B函數(shù)能夠借用A函數(shù):

    var A = function( name ){
        this.name = name;
    }; 
    var B = function(){
        A.apply( this, arguments );
    }; 
    B.prototype.getName = function(){
        return this.name;
    };
    var b = new B( "xiao" );
    console.log( b.getName() );
    

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/80761.html

相關(guān)文章

  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...

    blair 評(píng)論0 收藏0
  • JS程序

    摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊?,否則只會(huì)讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識(shí)只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說,阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評(píng)論0 收藏0
  • 讀懂 SOLID 「里氏替換」原則

    摘要:什么是里氏替換原則某個(gè)對(duì)象實(shí)例的子類實(shí)例應(yīng)當(dāng)可以在不影響程序正確性的基礎(chǔ)上替換它們。除了在編程語(yǔ)言層面,在前端實(shí)際工作中,你可能會(huì)聽到一個(gè)叫作的概念,這個(gè)概念我認(rèn)為也是里氏替換原則的一直延伸。 這是理解SOLID原則,關(guān)于里氏替換原則為什么提倡我們面向抽象層編程而不是具體實(shí)現(xiàn)層,以及為什么這樣可以使代碼更具維護(hù)性和復(fù)用性。 什么是里氏替換原則 Objects should be rep...

    vibiu 評(píng)論0 收藏0
  • 個(gè)人分享--web前端學(xué)習(xí)資源分享

    摘要:前言月份開始出沒社區(qū),現(xiàn)在差不多月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區(qū),現(xiàn)在差不多9月了,按照工作的說法,就是差不多過了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來說,差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...

    sherlock221 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<