原型的理解

2021-10-11 20:11:50 字數 1548 閱讀 5537

二、 原型的原型

二 什麼是原型鏈

總結寫這篇文章主要是回顧一下前幾天學習的原型和原型鏈的一些知識,加深印象.

我對原型的理解是,每個函式都有乙個prototype屬性,該屬性指向的這個函式的原型.

原型是乙個物件,最初的原型即為乙個空的物件,原型上面有乙個constructor屬性,而該屬性指向的是該函式.

// an highlighted block

function

ppp(

)ppp.prototype.constructor === ppp//true

ppp.prototype instanceof

object

//true

當通過建構函式得到例項後,該例項也會有乙個[[proto]]屬性,這個屬性指向的是建構函式的原型.不過該屬性以__proto__訪問(前後分別是兩個下劃線)

即每個函式都會有乙個proto屬性,該屬性指向的是他的父類(例項化得到該函式的建構函式)的原型物件

var p1 =

newppp()

p1.__proto__ === ppp.prototype //true

因為每個函式都會有proto的屬性,該屬性訪問的是他父類的原型

任然以上面的例子**

ppp.__proto__ === function.prototype  //true

//那麼function建構函式的原型的原型是什麼,答案顯然易見

function.prototype.__proto__ === object.prototype //true 因為原型也是物件

//訪問object原型的原型會得到什麼???

object.prototype.__proto__ // null 原型的盡頭了,返回null

object.__proto__ === function.prototype //true

object也是建構函式,用來建立物件的,所以他的proto屬性指向的是他的父類function(無敵建構函式)的原型 function.prototype

最特殊的是function的proto屬性,他指向function prototype

function.__proto__ === function.prototype  //true

我對原型鏈的理解是,例項和原型以及原型的原型他們直接相互都有關聯,即通過proto屬性,一直向上查詢,直到object.prototype.拿到我們所需要的屬性和方法.這之間的關係就是原型鏈.

原型裡面最特殊的是function 他的proto指向他的原型

原型鏈的盡頭是null,object.prototype.proto=== null

建構函式的prototype屬性指向他的原型,原型裡面有constructor(原型鏈上可以訪問到)指向建構函式本身,建構函式本身的proto屬性指向的是他父類的原型.

原型以及原型鏈的理解

借用大佬的話就是萬物皆可為物件,但是物件如此之多,每個物件都要寫共有的方法麼,客觀上看我覺得這種事情也不可能,這時候就需要乙個類似於倉庫的東西,如果你手裡有就用你的,如果沒有就去找倉庫的,你可以在有使用想法的時候,提前準備放到倉庫裡,等使用的時候再去倉庫呼叫。接下來說的就是把這個倉庫對應到那個原型物...

js 原型 原型鏈理解

執行發現如下 自定義乙個函式,函式包含兩個關鍵資料 prototype,proto 1 原型 prototype person具有prototype屬性 包含我們定義的屬性name,age以及constructor,並且constructor指向我們的person函式,可以理解為prototype就...

我理解的原型

js中幾大疑難雜症 原型 通常提到原型都會提到繼承 我覺得原型就是為了繼承啊 比如你想給你 裡的乙個物件擴充套件乙個通用的方法 就可以寫成 array.prototype.func function 這樣就給陣列物件新增了乙個func方法 這樣 var arr 1,2,3 arr.func 就跟陣列...