成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

sunsmell / 1030人閱讀

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

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

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

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

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

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

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

(1)使構(gòu)造函數(shù)A的prototype等于另一個構(gòu)造函數(shù)B的一個實例(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/80761.html

相關(guān)文章

  • JavaScript深入淺出

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

    blair 評論0 收藏0
  • JS程序

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

    melody_lql 評論0 收藏0
  • ES6-7

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

    mudiyouyou 評論0 收藏0
  • 讀懂 SOLID 「里氏替換」原則

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

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

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

    sherlock221 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<