原型及原型鏈

2021-09-25 12:57:28 字數 1804 閱讀 8195

原型定義:

原型是function物件的乙個屬性,它定義了建構函式製造出的物件的公共祖先。

通過建構函式產生的物件,可以繼承該原型的屬性和方法。

原型是物件屬性prototype對應的值。

注:原型是乙個物件。

我們可以直接在建構函式的prototype上直接新增屬性,也可以將建構函式的prototype指向乙個物件,如下:

在原型上新增屬性和方法後,通過建構函式生成的物件可以直接使用原型上的屬性及方法(優先使用自己的)。

function man() 

man.prototype.*** = "man" //直接新增屬性

man.prototype.say*** = function ()

var man = new man();

man.say***(); // i am man

function woman()

woman.prototype = ,

constructor: woman //由於指向的新物件中沒有constructor,所以新增了指向建構函式的constructor,這個值可以不新增

上圖為控制台列印結果,在原型上新增屬性和將原型指向乙個物件(物件中新增了指向建構函式的constructor)是一樣的(初學前端,如有錯誤還望指教)。

.物件檢視原型:隱式屬性 __proto __

如:man.__proto __ ==> man.prototype

原型鏈:通過prototype將原型連成的鏈就是原型鏈,如下:

grandfather.prototype.name = "zhang";

function grandfather()

var grandfather = new grandfather();

grandfather.sayname = function()

father.prototype = grandfather; // 將grandfather作為father的原型

function father()

var father = new father();

son.prototype = father; // 將father作為son的原型

function son()

var son = new son();

son.sayname(); // 輸出 zhang

.

沒有繼承object.prototype的物件:object.create(null)

如上所示,只有obj1沒有繼承object

js原型及原型鏈

在建構函式建立出來的時候,系統會預設幫建構函式建立乙個原型物件。原型物件中的屬性和方法可以被建構函式建立出來的物件訪問。建構函式.prototyoe 屬性 方法 的查詢原則 當訪問物件的成員的時候,會在自身找有沒有,如果有直接使用,如果沒有找到,則去當前物件的原型物件中找,如果找到了直接使用 如果沒...

js原型及原型鏈

每個物件都有proto屬性用於指向建立它的建構函式的原型物件。function animal name animal.prototype.getname function animal.prototype.getage function var animal1 newanimal kate var ...

原型及原型鏈相關理解

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