es5 建構函式和原型學習總結
一:例項成員和靜態成員
例項成員是建構函式內部通過this新增的成員,例項成員只能通過例項物件來訪問
靜態成員是通過建構函式新增的成員,只能通過構造函式呼叫
二:建構函式的缺點:
建構函式建立例項時,會為每乙個例項物件單獨開闢乙個方法的空間來存放同乙個函式,這樣非常浪費資源
[解決方法]:
[prototype(原型物件):每個建構函式都有乙個原型物件,我們把共有的方法定義到原型物件上,這樣所有的例項物件都會呼叫這個方法,不需要再額外的開闢新的空間
為什麼例項物件可以呼叫原型物件定義的方法呢:
例項物件身上自帶_proto_屬性指向我們建構函式原型物件的prototype
方法的查詢規則:
先去建構函式中查詢是否有相應的方法,如果有就執行該方法,如果沒有對應的方法,因為有_proto_的存在,就去原型物件上查詢相應的方法
constructor:
star.prototye和例項物件._proto_都有constructor這個屬性返回的是原來的建構函式很多情況下:原型物件書寫為star(舉例).prototype ={},這個時候就沒有constructor這個屬性了,這時候需要手動的利用constructor指回原來的建構函式
原型物件的應用:
擴充套件原來的內建物件
經典例子:給陣列物件新增sum方法
建構函式和原型的總結
首先需要說明的是通過建構函式來建立物件的方法有很多,es6之後是通過class來建立物件的。那麼今天就用建構函式的方式來建立物件。我理解的通過建構函式來建立物件,實際上就是把公共的屬性和方法封裝成函式,然後例項化。下面來建立乙個簡單的建構函式 function star name,age var l...
建構函式和原型
function student name,age student.prototype var zs new student 張三 18 我們先來看一張圖 在這張圖里student建構函式的prototype指向student原型物件,student原型物件又指向student建構函式,zs物件.p...
建構函式和原型
new的時候做的的4個事情 1.在記憶體中建立乙個新的空物件 2.讓this指向這個新物件 3.執行建構函式裡的 給這個新物件 新增屬性和方法 4.返回這個新物件 靜態成員與例項成員 靜態成員 由構造本身建立的成員 只能由建構函式本身來訪問 例項成員 在建構函式內部建立的物件成員為例項成員 只能由例...