javascript 原型與原型鏈(筆記)
不管任何文章,一遍不懂,兩遍,兩遍不懂,繼續看,技術在不斷提升,直到有一天你突然發現就這麽明白了。。。。。。
原型這一塊一直想總結一下,值到今天才動筆
原型
定義:
Js所有的函數都有一個prototype屬性,這個屬性引用了一個對象,即原型對象,也簡稱原型。我們講的更多是構造函數的原型,但是也不能否定普通函數也有原型。
javascript中一切皆對象,每個對象都有一個 __proto__的屬性;函數的__proto__對應“function(){}”對像。
函數還有prototype屬性。
一個實例的__proto__===構造函數的prototype。
作用:
原型用於對象添加屬性及方法
構造函數 原型等之間的關系:
function P(){};
var p=new P();
當一個構造函數P創建時,會擁有一個prototype屬性,當new一個實例p時,其實例p的__proto__屬性對應構造函數P的prototype屬性;(P.prototype===p.__proto__)
實例p的__proto__.constructor對應構造函數P;( p.__proto__.constructor===P(){} )
從而p.__proto__.constructor.prototype指向P.prototype(p.__proto__.constructor.prototype===P.prototype)
p.constructor===p.__proto__.constructor
p.constructor.prototype與的內部_proto_是兩碼事,實例化對象時用的是_proto_,實例p是沒有prototype屬性的,但是有內部的__proto__,通過__proto__來取得原型鏈上的原型屬性和原型方法
原型鏈
定義:
javascript中一切皆對象,每個對象有__proto__屬性,而__proto__屬性指向其實例化它的構造函數原型............所以會形成一條__proto__連起來的鏈條
原型鏈作用:
實現對象屬性與方法的繼承
ES6 的Class 可以通過extends
如有不對的地方,請多多指教! ——RLflash
javascript 原型與原型鏈(筆記)