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

資訊專欄INFORMATION COLUMN

class 與 原型鏈 解析

novo / 2237人閱讀

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

這篇文章只是我個人的見解,因為也是今年剛畢業(yè),所以理解不一定非常的準確,如果理解有誤希望大家告訴我。

一、class 相當于 拿實例對象的名字 來給 原型 命名。

為什么這么說呢。

先說說 es6中的用法 :

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

這個類用 es5怎么寫呢:

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

其實寫法上是差不太多的。

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

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

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

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

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

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

相關文章

  • 獨家解析Javascript原型繼承

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

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

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

    LiuRhoRamen 評論0 收藏0
  • 「譯文」JavaScript核心

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

    高璐 評論0 收藏0

發(fā)表評論

0條評論

novo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<