天天看點

JS - 原型基礎

在進行說JS的原型之前,先說一個JS是基于什麼開發的:

    (1)JS是基于對象開發的

    (2)JS是是一種腳本語言,即隻要寫出來就可以進行立即編譯執行

    (3)JS是基于原型繼承的,這點很重要,下面的知識都是基于此點才能進行說明

在說今天的重點“什麼是原型”之前,要先說兩個東西:

    (一)什麼是原型屬性

JS - 原型基礎

        如上圖,建立一個函數function Person() {},打開浏覽器控制器,從螢幕可看到圖中,紅框中Object即是Person的原型屬性,簡稱原型,構造函數使用prototype來指向原型

    (二)什麼是原型對象

JS - 原型基礎

        如上圖,将上面的Person建立一個對象p,其中的Object即是對象p的原型對象,簡稱原型,執行個體對象使用__proto__來指向原型。

上面兩點需要牢記,不能混淆!!!原型對構造函數而言的全稱為原型屬性;原型對執行個體對象而言的全稱為原型對象;簡稱都為原型!下面是例圖:

JS - 原型基礎

使用構造函數.prototype或執行個體對象.__proto__都可以通路到原型,後一種使用方法是使用對象的動态特性對原型進行修改,但禁止用于代碼中,因為構造函數若建立出多個執行個體對象,其中一個執行個體對象對原型進行了修改,就會影響到其他對象。這樣就會造成很多的不确定性、維護困難。

執行個體對象.__proto__一般用于調試,構造函數.prototype一般用于代碼中

初級知識說完了,下一篇将将原型中級知識。

初級知識總結,上圖必須牢記,是核心知識:

(1)構造函數用prototype指向原型,全稱原型屬性

(2)執行個體對象用__proto__指向原型,全稱原型對象

(3)原型用constructor指向構造函數