面向?qū)ο?-第四彈原型鏈

原型鏈?zhǔn)绞莻€(gè)好東西,我們可以靠這個(gè)東西實(shí)現(xiàn)繼承和派生。
我們需要明白一些概念,原型,原型對(duì)象,原型鏈。我們一個(gè)個(gè)的來(lái)看。

原型

原型(prototype):每個(gè)函數(shù)都有這個(gè)屬性。這個(gè)屬性指向一個(gè)對(duì)象,然后這個(gè)對(duì)象有個(gè)專業(yè)的名字叫:原型對(duì)象。


原型對(duì)象:其實(shí)就是一個(gè)對(duì)象。只是這個(gè)對(duì)象是私有的。只有構(gòu)造函數(shù)可以找到這個(gè)對(duì)象。有兩個(gè)特殊的屬性: constructor、proto

說(shuō)這么多,舉個(gè)例子,畫(huà)一張圖,就知道了。

       function Person(){
              this.name = "zhaobw";
              this.age = "22";
       }
原型圖

  • 如上圖所示,函數(shù)Person()的prototype指向一個(gè)原型對(duì)象Person.prototype。這個(gè)原型對(duì)象的屬性constructo又指向了函數(shù)person。
    我們?cè)诳刂婆_(tái)打印,看如何可以訪問(wèn)到原型對(duì)象。

     function Person(){
          this.name = "zhaobw";
          this.age = "22";
      }
      console.log(Person.prototype);
      console.log(Person.prototype.constructor);
    
控制臺(tái)輸出

  console.log(Person.prototype);
  • 輸出的是構(gòu)造函數(shù)。

    console.log(Person.prototype.constructor);
  • 輸出的是原型對(duì)象的constructor的。

基本的概念我們都明白了。接下來(lái)說(shuō)重點(diǎn)。原型鏈。我們可以根據(jù)這個(gè)東西實(shí)現(xiàn)很多有意思的功能。

原型鏈

原型鏈就是個(gè)鏈子。它就像一個(gè)鏈子,把對(duì)象、構(gòu)造函數(shù)串聯(lián)起來(lái)。我們可以通過(guò)這個(gè)鏈子訪問(wèn)到所有的對(duì)象和構(gòu)造函數(shù)。

說(shuō)這么多,不看一個(gè)例子,畫(huà)一張圖。這一次我們弄一大的。詳細(xì)點(diǎn)的
例子

   function Person(){
        this.name = "zhaobw";
        this.age = "22";
    }
    var student = new Person();
原型圖.png

看完圖后是不是很暈?暈,就對(duì)了。
我說(shuō)說(shuō)我的想法。js的世界,你可以這樣理解,這個(gè)世界的上帝有兩個(gè),一個(gè)是function,一個(gè)是object。這兩個(gè)大哥創(chuàng)造了世界。

  • 一個(gè)function有的屬性是:proto、prototype
  • 一個(gè)obejct有的屬性是:proto、prototype、constructor
  • 所有的是對(duì)象都是由object創(chuàng)建的。
  • 所有的函數(shù)都是可以看成對(duì)象。
  • proto是指向構(gòu)造函數(shù)的原型對(duì)象。
  • prototype是指向自己的原型對(duì)象。

也就是object創(chuàng)造了function,function創(chuàng)造了obejct。兩個(gè)人相互創(chuàng)建了對(duì)方。所以暈也是就是暈最后面一點(diǎn)。

一句,所有的對(duì)象都是object創(chuàng)建的。所有的函數(shù)都是function創(chuàng)建的。

暈?。。?!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容