1. 程式人生 > >javascript 原型與原型鏈(筆記)

javascript 原型與原型鏈(筆記)

這一 log flash truct 我們 技術分享 img mage .proto

不管任何文章,一遍不懂,兩遍,兩遍不懂,繼續看,技術在不斷提升,直到有一天你突然發現就這麽明白了。。。。。。

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

原型

定義:

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 原型與原型鏈(筆記)