原型與原型鏈的理解及解釋

2021-10-12 03:27:26 字數 1230 閱讀 5054

原型和繼承constructor、prototypeproto

建構函式

例項物件

用來初始化新建立的物件的函式是建構函式。

在 c++ 語言中,類 有乙個建構函式, 它與類同名且沒有返回值的(可以不寫,也可過載多個);

在 js 中, 沒有 類 的概念,原型物件 姑且等同於 類 ,原型物件有 constructor 屬性,該屬性指向原型物件的建構函式。 js 中預設存在的一些原型物件,也存在它們的建構函式,比如 object() array() function() string() number() boolean() 等。

通過建構函式可以例項化多個物件,它們稱為例項物件,且他們擁有相同的原型物件。 可以通過原型物件來實現 繼承。

prototype

每乙個底層的建構函式都會構造乙個物件給上乙個建構函式作為原型

顯式原型

建構函式有 prototype 屬性, 指向例項物件的原型物件。 同一建構函式例項化的不同例項物件指向相同的原型物件。 在 prototype 下定義的方法 有點像 c++ 裡的在 類

constructor

原型物件有 constructor 屬性,指向該原型物件的建構函式。

由於例項繼承自原型物件,所以也擁有 constructor 屬性, 指向原型物件的建構函式。

一句話,他們(原型物件、例項)的(constructor)指向完全相同

proto

隱式原型。正是由於它才得以構成原型鏈。

例項物件有proto屬性,指向該例項物件對應的原型物件。 也可以理解為 父級物件 吧

建構函式也有proto屬性。constructor 下的proto是指向 function.prototype 的,說到底建構函式也是乙個稍特殊的函式(比普通函式多乙個 prototype)

終極原型是 object.prototype 。object 沒有proto

原型及原型鏈相關理解

下面是可能用到的知識點 var o1 普通物件 function f1 函式物件 f1.prototype 原型物件 function person name,age,job 每個物件都有 proto 屬性,但只有函式物件才有 prototype 屬性 有constructor才能夠例項化 將per...

原型及原型鏈

原型定義 原型是function物件的乙個屬性,它定義了建構函式製造出的物件的公共祖先。通過建構函式產生的物件,可以繼承該原型的屬性和方法。原型是物件屬性prototype對應的值。注 原型是乙個物件。我們可以直接在建構函式的prototype上直接新增屬性,也可以將建構函式的prototype指向...

js 原型 原型鏈理解

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