成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

class 與 原型鏈 解析

novo / 2171人閱讀

摘要:一相當(dāng)于拿實(shí)例對(duì)象的名字來給原型命名。不專業(yè)點(diǎn)說的實(shí)例函數(shù)為匿名函數(shù),而中,構(gòu)造函數(shù)即原型鏈展示的原型為匿名函數(shù)。關(guān)系圖不通過創(chuàng)造,不通過各種情況擾亂的情況下分析為原型屬性,展示構(gòu)造函數(shù),比如上面舉例的某同學(xué)的媽媽構(gòu)造函數(shù)。

這篇文章只是我個(gè)人的見解,因?yàn)橐彩墙衲陝偖厴I(yè),所以理解不一定非常的準(zhǔn)確,如果理解有誤希望大家告訴我。

一、class 相當(dāng)于 拿實(shí)例對(duì)象的名字 來給 原型 命名。

為什么這么說呢。

先說說 es6中的用法 :

 class testClass{
      constructor(name,age){
            this.name = name;
            this.age = age;
        }
        printFn() {
            console.log(this.age);
        }
    }
    new testClass("hello",18).printFn()//18

這個(gè)類用 es5怎么寫呢:

function testProto(name,age) {
    this.name = name;
    this.age = age;
   }
   testProto.prototype.printFn = function(){
    console.log(this.age);
   }
   new testProto("hello",18).printFn();
   

其實(shí)寫法上是差不太多的。

不專業(yè)點(diǎn)說:class的實(shí)例函數(shù)(constructor)為匿名函數(shù),而es5中,構(gòu)造函數(shù)(即原型鏈prototype展示的原型)為匿名函數(shù)。
class例子中,class是有名字的 —— testClass,每個(gè)類的constructor唯一,就像每本書的目錄 是唯一的,那么翻書的時(shí)候,正常說法就是打開 某本書的目錄,而不用特意去給目錄命名。

es5例子中,實(shí)例函數(shù)的名字是唯一的 —— testProto,他的構(gòu)造對(duì)象,就是,他的原型鏈對(duì)象,testProto.prototype。這就像老師找學(xué)生家長聊天一樣,一般老師都會(huì)說,讓某同學(xué)(testProto)的媽媽(prototype)過來一下,某同學(xué)的名字已知,那么他的媽媽也就確定了。當(dāng)實(shí)例化的時(shí)候(new testProto()),這個(gè)對(duì)象的名字就是以某同學(xué)的名字命名的。

prototype,constructor,__proto__關(guān)系圖(不通過create創(chuàng)造,不通過各種情況擾亂的情況下分析);
prototype為原型屬性,展示構(gòu)造函數(shù),比如上面舉例的某同學(xué)的媽媽(構(gòu)造函數(shù))。某同學(xué)就是他媽媽生(實(shí)例)的對(duì)象。這個(gè)用類的思想比較好理解,我們平時(shí)調(diào)用的方法,其實(shí)都是一個(gè)原型的實(shí)例化(constructor)。
實(shí)例化對(duì)象之后,屬性會(huì)存在于對(duì)象的__proto__中,當(dāng)調(diào)用一個(gè)屬性的時(shí)候,如果這個(gè)對(duì)象中沒有,就回去他的__proto__中查找。
舉個(gè)例子:

        
    function test1() {console.log("test1")};
    test1.prototype.test2 = function(){console.log(0)};
    new test1().__proto__ .test2 == new test1().test2//true;
    
    new test1()實(shí)例化之后的結(jié)構(gòu)大概如下:
    test1 {
             __proto__:{
                          construtor:function(){console.log("test1")},
                          test2: function(){console.log(0)}
                        }
           }
    construtor會(huì)被立即執(zhí)行
    所以 控制臺(tái)會(huì)分別打印出  test1 ;test1 ;true;第一個(gè)test1 是執(zhí)行new test1().__proto__ .test2這句話時(shí)候打印出來的,第二個(gè)test1是執(zhí)行這句話new test1().test2的時(shí)候打印出來的。
    new test1().constructor == test1//true;
    new test1().__proto__.constructor == test1  //true;
    這句話可以證明“我們平時(shí)調(diào)用的方法,其實(shí)都是一個(gè)原型的實(shí)例化(constructor)。實(shí)例化對(duì)象之后,屬性會(huì)存在于對(duì)象的__proto__中,當(dāng)調(diào)用一個(gè)屬性的時(shí)候,如果這個(gè)對(duì)象中沒有,就回去他的__proto__中查找?!?

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90796.html

相關(guān)文章

  • 獨(dú)家解析Javascript原型繼承

    摘要:面向?qū)ο髮?shí)現(xiàn)代碼動(dòng)物發(fā)聲汪汪喵喵調(diào)用代碼動(dòng)物發(fā)聲喵喵動(dòng)物發(fā)聲汪汪當(dāng)要增加一種動(dòng)物時(shí),只需增加一個(gè)繼承,不會(huì)影響其他已有的動(dòng)物邏輯。所以的繼承和的原型繼承,可謂殊途同歸。 傳統(tǒng)面向?qū)ο蟮睦^承和多態(tài) 我們知道C++/Java/C#等面向?qū)ο笳Z言,都原生地支持類的繼承。繼承的核心作用大抵是創(chuàng)建一個(gè)派生類,并使其復(fù)用基本類(即父類)的字段和/或方法。并且派生類可以重寫基本類的方法。這樣基本類和...

    verano 評(píng)論0 收藏0
  • 【Step-By-Step】高頻面試題深入解析 / 周刊06

    摘要:實(shí)例擁有構(gòu)造函數(shù)屬性,該屬性返回創(chuàng)建實(shí)例對(duì)象的構(gòu)造函數(shù)。在考慮對(duì)象而不是自定義類型和構(gòu)造函數(shù)的情況下,寄生式繼承也是一種有用的模式。在子類的構(gòu)造函數(shù)中,只有調(diào)用之后,才能使用關(guān)鍵字,否則報(bào)錯(cuò)。 不積跬步無以至千里。 關(guān)于【Step-By-Step】 Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。每個(gè)周末我會(huì)仔細(xì)閱讀...

    LiuRhoRamen 評(píng)論0 收藏0
  • 「譯文」JavaScript核心

    摘要:在這個(gè)情況下我們可能需要使用構(gòu)造函數(shù),其以指定的模式來創(chuàng)造對(duì)象。構(gòu)造函數(shù)也有自己的,值為,也通過其屬性關(guān)聯(lián)到。從邏輯上來說,這是以棧的形式實(shí)現(xiàn)的,它叫作執(zhí)行上下文棧。 原文:http://dmitrysoshnikov.com/ecmascript/javascript-the-core/ 對(duì)象 原型鏈 構(gòu)造函數(shù) 執(zhí)行上下文棧 執(zhí)行上下文 變量對(duì)象 活動(dòng)對(duì)象 作用域鏈 閉包 Thi...

    高璐 評(píng)論0 收藏0

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

0條評(píng)論

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