javascript 原型與原型鏈(筆記)

無論任何文章,一遍不懂,兩遍,兩遍不懂,繼續看,技術在不斷提高,直到有一天你忽然發現就這麼明白了。。。。。。javascript

原型這一塊一直想總結一下,值到今天才動筆java

原型函數

定義:prototype

Js全部的函數都有一個prototype屬性,這個屬性引用了一個對象,即原型對象,也簡稱原型。咱們講的更可能是構造函數的原型,可是也不可否定普通函數也有原型。code

javascript中一切皆對象,每一個對象都有一個 __proto__的屬性;函數的__proto__對應「function(){}」對像。對象

函數還有prototype屬性。blog

一個實例的__proto__===構造函數的prototype。繼承

做用:ip

原型用於對象添加屬性及方法原型鏈

構造函數 原型等之間的關係:

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

相關文章
相關標籤/搜索