什麼是原型和原型鏈

2021-10-23 22:24:43 字數 1227 閱讀 3801

①所有引用型別都有乙個__proto__(隱式原型)屬性,屬性值是乙個普通的物件

②所有函式都有乙個prototype(原型)屬性,屬性值是乙個普通的物件

③所有引用型別的__proto__屬性指向建構函式的prototype

var a = [1,2,3];

a.__proto__ === array.prototype; // true

當訪問乙個物件的某個屬性時,會先在這個物件本身屬性上查詢,如果沒有找到,則會去它的__proto__隱式原型上查詢,即它的建構函式的prototype,如果還沒有找到就會再在建構函式的prototype__proto__中查詢,這樣一層一層向上查詢就會形成乙個鏈式結構,我們稱為原型鏈

舉例,有以下**

function

parent

(month)

var child = new parent('ann');

console.log(child.month); // ann

console.log(child.father); // undefined

在child中查詢某個屬性時,會執行下面步驟

訪問鏈路為:

①一直往上層查詢,直到到null還沒有找到,則返回undefinedobject.prototype.__proto__ === null③所有從原型或更高階原型中的得到、執行的方法,其中的this在執行時,指向當前這個觸發事件執行的物件

什麼是原型 原型物件 原型鏈?

每當宣告乙個函式的時候,系統都有乙個 prototype 原型 屬性,這個屬性是乙個指標,指向乙個物件,而這個物件的用途是包含可以由特定型別的所有例項共享的屬性和方法,稱為原型物件 在宣告了乙個函式後,這個建構函式 宣告了的函式 中會有乙個屬性prototype,這個屬性指向的就是這個建構函式 宣告...

什麼是原型鏈?

在看到的一篇文章,感覺描述很清晰,為了防止自己忘記,特此理解性的記錄下來,也供大家一起學習,如有不對之處請拍案指出,謝謝。原型鏈是針對建構函式的,比如我先建立了乙個 plane 建構函式,然後給這個函式賦予 fly 的方法,我再建立乙個 fighter 建構函式並讓其繼承 plane 物件,然後當我...

原型 和 原型鏈

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