原型和原型鏈

2021-09-29 20:54:37 字數 1317 閱讀 9177

原型是乙個物件,我們稱prototype為原型物件。

建構函式通過原型分配的函式是所有物件所共有的。

js規定,每乙個建構函式都有乙個prototype屬性。prototype就是乙個物件,這個物件的所有屬性和方法,都會被建構函式所擁有。

我們把不變的方法,直接定義在prototype物件上,這樣所有物件的例項就可以共享這些方法。

原型的作用是共享方法,減少記憶體的使用。

function star(name,age)*/

}/*star.prototype.sing=function()*/

star.prototype=,

dance:function()

}var ldh=new star("劉德華",18)

var zxy=new star("張學友",20)

console.log(ldh.sing===zxy.sing)

物件身上系統新增乙個__proto__指向建構函式的原型物件

物件都有乙個屬性__proto__指向建構函式的prototype原型物件,之所以物件可以使用建構函式prototype原型物件的屬性和方法,就是因為有__proto__的存在。

__proto__物件原型和原型物件prototype是等價的

__proto__物件原型的意義在於為物件的查詢機制提供乙個方向,或者說一條路線

console.log(ldh) //可以看到__proto__

console.log(ldh.__proto__===star.prototype) //true

//方法的查詢規則:首先檢視ldh物件身上是否有sing方法,如果有就執行這個物件上的sing;

//如果沒有sing方法,因為有__proto__的存在,就去建構函式原型物件prototype上去找

注:建構函式、例項、原型物件三者的關係

原型鏈為物件成員查詢提供乙個方向,或者說一條路線

(1)、當訪問乙個物件的屬性(包括方法時),首先查詢這個物件自身有沒有該屬性

(2)、如果沒有就查詢它的原型(也就是__proto__指向的prototype原型物件)

(3)、如果還沒有就查詢原型物件的原型(object的原型物件)

(4)、依次類推一直找到object為止(null)

原型 和 原型鏈

每乙個js物件 null除外 都和另乙個物件相關聯。另乙個 物件就是我們熟知的原型,每乙個物件都從原型繼承屬性。所有通過物件直接量建立的物件都具有同乙個原型物件,並可以通過js object.prototype 獲得對原型物件的引用。通過關鍵字new和構造函式呼叫建立的物件的原型就是建構函式的 pr...

原型和原型鏈

原型鏈 例項物件與原型之間的連線,叫做原型鏈 function human human.prototype.age 22 var a new human console.log a.age 這裡的age掛載到了human的原型上面了。其實原型就是乙個物件。a為什麼能找到原型上面的物件呢?這裡例項物件...

原型和原型鏈

建構函式 function foo name age function 其實是 var a new object 的語法糖 var a 其實是 var a new array 的語法糖 function foo 其實是 var foo new function 的語法糖 new乙個物件的過程 建立乙...