原型鏈回顧

2021-10-08 13:25:18 字數 1837 閱讀 3152

對於原型鏈一直學的很懵,什麼prototype __ proto __,實在是繞啊。

有一張原型鏈的**(如下)如果是剛剛入門肯定被搞得暈頭轉向,這乙個箭頭那乙個箭頭的。今天把他拆開進行分析。

首先 函式才有 prototype 原型,物件 有 __ proto __ 屬性。

上面的圖就說明了 prototype 和 __proto __ 的區別

再到**上來看看

let obj =

;console.

log(obj.prototype)

;//undefied

console.

log(obj.__proto)

;//object

letfn

=function()

console.

log(fn.prototype)

// fn {}

console.

log(fn.__proto__)

//function(){}

再來看一張圖

有乙個 person 構函式, new出來乙個 person1 的函式。

person1 的constructor 的指向原建構函式

person1的 __ proto __ 指向 person.prototype

person.prototype 的 constructor 是指向 person的

person.prototype 的 prototype 是 person.prototype

還是有點繞 ,再看看**就能明白了

var

person

=function()

var person1 =

newperson()

person1.constructor===person;

//true

person === person.prototype.constructor;

//true

person1.__proto__ === person.prototype;

//true

person1.__proto__.constructor === person1.constructor //true

原型知道了,再看看原型l鏈

所有函式的prototype 指向 object.prototype

也就是person1 ——> person.prototype ——> object.prototype

在 js裡萬物皆物件,函式也屬於乙個物件 所有就多了

person ——> function.prototype ——> object.prototype

到這是不是就會覺得這個原型鏈會一直這麼走下去,沒有終點,但是 在控制輸出

object.prototype.__ proto __ 會指向 null

object.prototype.__ proto __ 

//null

所有原型鏈是有頂端

原型 原型鏈

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 原型物件 原型物件的作用 一般情況下,會把方法宣告在原型物件裡。目的是實現繼承。當物件訪問自身屬性或方法時,先從自身找有沒有,如果有...

原型 原型鏈

在最近的原型和原型鏈的學習中,感覺壓力有點大,學習難度也比較大,但又很基礎很重要,我們在學習中得要下很大的功夫才行。無論什麼時候,只要建立了乙個新的函式,就會根據一組特定的規則為這個函式建立乙個prototype的屬性,prototype這個屬性指向函式的原型物件,然後所有的的原型物件都會有乙個co...