JS之原型鏈, proto

2021-08-22 10:15:07 字數 1135 閱讀 1100

對於剛剛接觸js的人來說,js的原型鏈是有點不容易理解。但是,它絕對沒有那麼複雜。

1. __proto__叫做隱式原型

在js中,每個物件都會有乙個內建屬性:[[prototype]],目前所有的瀏覽器都可以通過__proto__屬性來訪問這個內建屬性。但是這並不是乙個正式的api,在es6中,object.setprototypeof(object,prototype)被推薦為正式的設定原型物件的方法。

作用:構成原型鏈,用於實現基於原型的繼承。

2.prototype叫做顯式原型

所有函式在被建立之後,都會有乙個prototype屬性,它指向函式的原型物件

作用:用來實現基於原型的繼承與屬性的共享

3.隱式原型指向建立這個物件的函式(constructor)的prototype

4.__proto__的指向問題:

__proto__的指向取決於建立的物件的方式

5.物件的__proto__指向了它的建構函式的原型物件。它的原型物件通過constructor屬性指回該物件的建構函式。

由於每個物件都有__proto__屬性,而在js中萬物皆物件(一般),所以會形成一條由__proto__連線起來的鏈。最終向上到null。js引擎在查詢屬性時,會在該物件中尋找,如果沒有就會通過原型鏈向上尋找。

這就是原型鏈。

幫你輕鬆理解js原型鏈, proto

以下是總結一下,網上太多畫圖的,說明的,彎彎繞繞,雲裡霧裡,很難讓人簡單理解,這裡對一些常見的名詞 換個說法 可能好理解一點 理解下面幾點,對於理解js的原型鏈,proto prototype,constructor有幫助 定義物件 是function person 這樣的定義,person就是定義...

原型prototype與原型鏈 proto

基於內建類原型擴充套件方法 以一道題為例,剖析原型與原型鏈的底層機制 呼叫當前例項物件的某個屬性 成員訪問 先看是否是自己的私有屬性,如果是則返回私有屬性的值 如果不是則沿著原型鏈 proto 向上查詢所屬類原型中的公有屬性 方法,直到查詢到基類object的原型為止。f1.proto gety 跳...

物件原型之 proto

function student name,age student.prototype.study function var zs new student 張三 18 雖然沒有定義zs物件的方法,但是系統自動為zs物件身上新增 proto 指向建構函式的原型物件。物件方法的查詢規則 zs當物件身上存...