1 回答

TA貢獻2019條經(jīng)驗 獲得超9個贊
首先明確兩個概念,引用變量 和 對象,在那一大段引用變量的互相引用中其實只涉及到兩個對象
我們姑且把他們稱為對象ObjP(原型對象)和對象Objf(函數(shù)對象)
對象objf中有一個屬性p指向objp,q的內(nèi)存結(jié)構(gòu)有兩部分,一部分保存著它的屬性名“p”,另一部分保存著objp的地址。
同樣,對象objp中有一個屬性f指向objf。
打個比方,兩個手機A,B,互相存著對方的手機號b,a。A可以通過A.b打給B,B可以通過B.a打給A,他們之間可以來回打無數(shù)次電話,但只存在兩個手機。它們之間存在互相的聯(lián)系,但聯(lián)系本身占用的資源是很少的。只有打電話的時候才會產(chǎn)生附加的資源消耗。
我們看到的結(jié)構(gòu)對瀏覽器是沒有意義的,它只是把聯(lián)系具象化給咱們看。就像如何向別人證明A存著B的手機號,當著你的面打個電話。你倒好,老讓人家來回打。其實你不去繼續(xù)往下點時,瀏覽器就不會去做那么無聊的事。
至于著“互相引用”什么時候到頭?,沒有所謂的頭,存手機號就是一下的事兒,被逼著老來回打電話才是最痛苦的。
換句話說,等你不在往下點時瀏覽器就不用為了應(yīng)付你讓objp和objf繼續(xù)“相互引用了”