原型鏈小筆記

2021-09-24 06:25:12 字數 1151 閱讀 5614

1、原型鏈

var a = functiona()

var a = new a();

console.log(a.__proto__); // 即構造器function a的原型物件,也是乙個物件所以也有__proto__物件

console.log(a.__proto__.__proto__); // 即構造器function object的原型物件

console.log(a.__proto__.__proto__.__proto__); // null

複製**

從上圖可以看出,例項就是物件,本例子中,a就是例項,a是建構函式,例項是通過new乙個建構函式生成的。 例項的__protpo__指向的是原型物件。

那什麼是原型鏈呢?

簡單理解就是原型組成的鏈,物件的__proto__它的是原型,而原型也是乙個物件,也有__proto__屬性,原型的__proto__又是原型的原型,就這樣可以一直通過__proto__想上找,這就是原型鏈,當向上找直到找到object的原型的時候,這條原型鏈就算到頭了。

例項和原型鏈之間的關係

通過乙個建構函式建立出來的多個例項,如果都要新增乙個方法,給每個例項去新增並不是乙個明智的選擇。這時就該用上原型了。 在例項的原型上新增乙個方法,這個原型的所有例項便都有了這個方法。

var a = functiona()

var a = new a();

var b = new a();

a.__proto__.say = function

()a.say();

b.say();!(

複製**

列印結果:

按照js引擎的分析方式,在訪問乙個例項的屬性的時候,現在例項本身中找,如果沒找到就去它的原型中找,還沒找到就再往上找,直到找到。這就是原型鏈。

and

只有函式有prototype,物件是沒有的。

但是函式也是有__proto__的,因為函式也是物件。函式的__proto__指向的是function.prototype。

也就是說普通函式是function這個建構函式的乙個例項。

構造物件,原型和原型鏈筆記

物件導向 物件導向 原型 對原型 原型鏈 function object 的理解 什麼是 js 原型鏈?物件導向程式設計 oop 是一種基於 物件 概念的程式設計正規化。該物件包含資料 屬性 以及一些執行過程的 即方法 物件的乙個特性是,呼叫物件的方法過程可以訪問並經常修改與其關聯的物件的資料字段 ...

原型 原型鏈

var animal function var dog function animal.price 2000 dog.prototype animal var tidy new dog console.log dog.price 為什麼輸出 undefined console.log tidy.pr...

原型,原型鏈

原型object.hasownproperty proname object 乙個物件的例項 propname 乙個屬性名稱的字串值 返回乙個布林值原型鏈中的this 原型物件 原型物件的作用 一般情況下,會把方法宣告在原型物件裡。目的是實現繼承。當物件訪問自身屬性或方法時,先從自身找有沒有,如果有...