js查詢機制原型鏈

2021-10-09 16:19:33 字數 1217 閱讀 6375

當訪問乙個物件的屬性(方法)的時候,首先查詢這個物件自身有沒有該屬性,如果沒有的話,就往prototype上查詢,根據原型鏈不斷找,知道找到該屬性(方法),如果沒有輸出null;

物件屬性__proto__

每個物件都有乙個屬性 :  __proto__

這是乙個非標準的屬性,用來指引的屬性;

如果例項物件沒有方法,就會通過__proto__指引尋找到prototype;

例項物件中有乙個屬性是__proto__ ,被稱之為物件原型,指向原型物件;

原型物件是建構函式的乙個屬性;

建構函式.原型物件 === 例項物件.物件原型

屬性作用: 指向prototype

原型物件prototype

function

star()

函式名.prototype.

方法名(

)// 每乙個建構函式都有乙個原型物件

// 原型物件本質就是建構函式的乙個屬性

*作用: 共享方法,節省記憶體空間

繼承

組合繼承: 建構函式 + 原型物件

*屬性繼承

function

father

(uname,age)

function

son(uname, age,score)

var obj =

newson

('劉德華',22

,99);

console.

log(obj.uname)

; console.

log(obj.score)

;改變this指向即可

改變this指向: 必然是改變某個函式的this

*方法繼承

子類.prototype = 父類.prototype //因為都是複雜型別,所以子類增加新方法的時候會影響父類

正確方法:

**把父類例項物件賦值給子類原型物件;

** 子類原型物件 = 父類例項物件

**把子類的原型物件指回建構函式

(否則會丟失)

,用constructor;

**

JS 物件 JS原型 原型鏈

參考學習 js物件 構造器函式 建立物件的函式。物件分為普通物件和函式物件。所有物件都有 proto 屬性 函式物件不止有 proto 屬性,還有prototype屬性 稱為原型物件 1.new function 產生的物件都是函式物件。2.所有函式物件的 proto 都指向function.pro...

js 原型與原型鏈

5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...

JS原型物件,原型鏈

js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...