深入理解javascript原型和閉包(3)——prototype原型

來源:互聯網
上載者:User

標籤:其他屬性   turn   一個   img   object   src   隱藏   new   分享圖片   

上文中提到對象是函數建立得,而函數也是一種對象。對象就是屬性的集合,沒有方法。

每個函數都有一個屬性——prototype。

這個prototype的屬性值是一個對象(屬性的集合),預設有一個constructor屬性,指向這個函數本身。

中,superType是一個函數,這個函數有個prototype屬性,該屬性的屬性值又是一個對象,這個對象預設有個constructor屬性,這個屬性的屬性值指向函數本身。

如,superType是一個函數,右側的方框就是它的原型。

原型作為對象,屬性的集合,預設有個constructor屬性,有的還有其他屬性。比如object的原型裡面就有好幾個其他屬性。

同時也可以在自己自訂的方法的prototype中新增自己的屬性

1 function Fn(){};2 Fn.prototype.name=‘張三‘;3 Fn.prototype.getYear=function () {4     return 1988;5 };

從畫的結構圖就可以看出自己手動添加的name屬性和getYear方法被添加到了prototype原型中。再看下面的例子

1 function Fn(){};2 Fn.prototype.name=‘張三‘;3 Fn.prototype.getYear=function () {4     return 1988;5 };6 var fn=new Fn();7 console.log(fn.name);8 console.log(fn.getYear());

Fn是一個函數,fn對象是從Fn函數new出來的,這樣fn對象就可以調用Fn.prototype中的屬性和方法。

每個對象都有一個隱藏的屬性——_proto_,這個屬性引用了建立這個函數的原型,即fn._proto_ === Fn.prototype

這裡的_proto_稱之為對象的隱式原型。

深入理解javascript原型和閉包(3)——prototype原型

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.