js基礎--原型物件與原型物件鏈

l1621834733發表於2020-09-29

一、原型物件

使用建構函式構造出例項物件的時候,會伴隨著一個原型物件,這個原型物件與建構函式是同時出現的,原型物件的一個重要作用是存放同一個建構函式構造出的不同例項化物件的相同屬性,就是說,我們構造出幾個“人”,他們身高體重不同,但是毛髮顏色相同,這個時候我們就不必在在建構函式裡新增毛髮顏色這一屬性,再逐個新增相同的顏色值,而是可以將這一屬性新增到建構函式的原型物件的屬性裡,這樣我們在構造例項物件的時候就不用設定毛髮顏色,而是通過原型物件來找出毛髮顏色,具體過程如下:

<script>
        function Person(name,height,weight,hair_style){
          this.name=name;
          this.height=height;
          this.weight=weight;
          this.hair_style=hair_style;
        }
        Person.prototype.voice="loud";
        
        var person1=new Person( "zs",180,60,"yellow");
        console.log(person1)
        // var person2=new Person( "ls",190,70,"black");
        // console.log(person1);
        // console.log(person2);
    </script>

在這裡插入圖片描述
可以看到在Person的原型裡有voice這一屬性。

二、原型物件鏈

物件在呼叫方法(或者屬性)的時候,首先會從自己物件的空間當中去找,如果找到就直接用了,如果沒有找到,然後去自己的原型物件空間去找(自己的建構函式的原型物件),如果找到就用,如果沒有找到,然後去自己的原型物件的原型物件空間當中去找(自己的建構函式的原型物件的建構函式的原型物件當中去找),如果找到就用,如果找不到繼續向上,直到找到Object的原型物件為止,找到就用,找不到報錯;我們把這個物件找屬性的過程形象的描述為原型鏈;
在這裡插入圖片描述
如圖

相關文章