一、關於prototype?函數
a.每一個函數中都有一個prototype屬性,這個屬性叫作原型。spa
b.prototype指向的這個對象就叫原型對象。prototype
c.prototype表示了一個類的屬性的集合。3d
二、原型對象中包含有constructor和__proto__。對象
三、當經過new將該函數實例化後,其內部方法也可用實例對象調用。blog
如:var ABC=new wxy();繼承
ABC.case();內存
當未被實例化時也可直接聲明其內部方法調用。原型鏈
如:wxy.case();原型
四、咱們能夠經過prototype給原型添加方法
五、由上圖能夠看出經過prototype給wxy添加了case方法。且經過prototype添加的case方法是存放在__proto__中的,那麼咱們就能夠先大膽猜想一下prototype是否與__proto__相等。
上圖打印結果能夠發現構造函數中的prototype原型與實例化對象中的__proto__是恆等的。
六、下面來了解一下__proto__
a.每個對象中都會有一個__proto__屬性
b.__proto__指向了一個對象,這個對象是原型對象
c.實例化對象能夠直接訪問__proto__裏面的一些方法
七、由__proto__組成的鏈條叫作原型鏈。在使用New方法初始化函數的時獲得的新對象的__proto__屬性會指向函數對象的原型對象,而函數對象的原型對象又繼承至原始對象。把這個由__proto__串起來的鏈叫作原型鏈。原型鏈實際上就是js中數據繼承的繼承鏈。
八、由以上敘述就可總結出prototype的做用有:
a.節約內存
b.擴展屬性和方法