在JavaScript中,prototype對象是實現面向對象的一個重要機制。
每個函數就是一個對象(Function),函數對象都有一個子對象 prototype對象,類是以函數的形式來定義的。prototype表示該函數的原型,也表示一個類的成員的集合。
要弄清楚原型鏈就要先弄清楚 function 類型,在JavaScript中沒有類的概念,都是函數,所以它是一門函數式的編程語言。類有一個很重要的特性,就是它可以根據它的構造函數來創建以它為模板的對象。在javascript中,函數就有2個功能
第一、 作為一般函數調用
第二、 作為它原型對象的構造函數 也就new()
凡是通過 new Function() 創建的對象都是函數對象,其他的都是普通對象
JS在創建對象(不論是普通對象還是函數對象)的時候,都有一個叫做__proto__的內置屬性,用於指向創建它的函數對象的原型對象prototype。
1.原型和原型鏈是JS實現繼承的一種模型。
2.原型鏈的形成是真正是靠__proto__ 而非prototype
將方法定義到構造方法的prototype上,這樣的好處是,通過該構造函數生成的實例所擁有的方法都是指向一個函數的索引,這樣可以節省內存。