摘要:如何理解和原型空間我們知道在中萬物皆對象現(xiàn)在我們假設(shè)每一個對象創(chuàng)建時都會產(chǎn)生一個原型空間原型對象現(xiàn)在我們記住三句話實(shí)例由其定義共享原型空間由來尋找定義的原型空間由來尋找自己的原型空間實(shí)例由其定義共享原型空間此圖片為轉(zhuǎn)載此圖片為轉(zhuǎn)載
(如何理解_proto_和prototype) 原型空間
我們知道在js中萬物皆對象,現(xiàn)在我們假設(shè)每一個對象創(chuàng)建時都會產(chǎn)生一個原型空間(原型對象 )
實(shí)例由其定義共享原型空間
由__proto__來尋找定義的原型空間
由prototype來尋找自己的原型空間
ps
p:prototype [p]: _proto_ 此圖片為轉(zhuǎn)載
此圖片為轉(zhuǎn)載
所有函數(shù)都是由Function構(gòu)造函數(shù)構(gòu)造的
function函數(shù)也是Function構(gòu)造函數(shù)構(gòu)造的所以時function自己構(gòu)造了自己所以自己指向自己的原型空間
我們可以看出圖中function的原型空間和animal的原型空間都是object類型(其實(shí)第二列的原型空間都是object的實(shí)例,但邏輯上不是)
//所有函數(shù)類型的隱式原型都相同 因?yàn)槎际荈unction的原型對象創(chuàng)建 //所以構(gòu)造函數(shù)的__proto__是Function //那么Function的隱式原型 ? var fun = new Function(); console.log(fun.__proto__===Function.prototype); console.log(Function.__proto__===Function.prototype); //所以Function本身的隱式原型和顯示原型相同 //可以看出Object也是函數(shù)定義的所以他的隱士原型應(yīng)該是Function 的顯示原型 console.log(Object.__proto__===Function.prototype)
那么object的原型空間的原型空間應(yīng)該是undefined但這樣就會讓原型鏈沒有盡頭
為了邏輯完善就令其為null
可以看出原形空間的定義是由其定義的原型空間來定義的(實(shí)例和其定義共享原型空間)
function Animal(){} function Bird(){} function Swallow(){} Bird.prototype= new Animal() Swallow.prototype=new Bird() var swallow = new Swallow() console.log(swallow.__proto__.prototype) console.log(Swallow.__proto__.prototype) console.log(Bird.__proto__.prototype) console.log(Animal.__proto__.prototype) console.log(Function.prototype.__proto__.prototype) console.log(Swallow.prototype) console.log(Animal.prototype) var animal = new Animal console.log(animal.__proto__.__proto__) var obj = {} console.log(typeof (obj.__proto__.__proto__)) ////ps沒有修正construct
那么若假設(shè)Pobject來定義了Object的原型空間的原型空間那么圖中所有的(undefined)的位置的_proto_都會指向Pobject的原型空間以這個邏輯就可以讓無限迭代下去(指針的指針的.....的指針)
這樣向上尋找原型鏈和向下尋找原型鏈就統(tǒng)一了,但js設(shè)計(jì)封鎖了向上無限迭代(Object的原型空間為null)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109835.html
摘要:寫在前面如果說是一本武學(xué)典籍,那么原型鏈就是九陽神功。那么,如何修煉好中的九陽神功呢真正的功法大成的技術(shù)是從底層上去理解,那種工程師和碼農(nóng)的區(qū)別就在于對底層的理解,當(dāng)你寫完一行代碼,或者你遇見一個解決的速度取決于你對底層的理解。 寫在前面 如果說JavaScript是一本武學(xué)典籍,那么原型鏈就是九陽神功。在金庸的武俠小說里面,對九陽神功是這樣描述的:練成「九陽神功」后,會易筋洗髓;生出...
摘要:寫在前面如果說是一本武學(xué)典籍,那么原型鏈就是九陽神功。那么,如何修煉好中的九陽神功呢真正的功法大成的技術(shù)是從底層上去理解,那種工程師和碼農(nóng)的區(qū)別就在于對底層的理解,當(dāng)你寫完一行代碼,或者你遇見一個解決的速度取決于你對底層的理解。 寫在前面 如果說JavaScript是一本武學(xué)典籍,那么原型鏈就是九陽神功。在金庸的武俠小說里面,對九陽神功是這樣描述的:練成「九陽神功」后,會易筋洗髓;生出...
摘要:寫在前面如果說是一本武學(xué)典籍,那么原型鏈就是九陽神功。那么,如何修煉好中的九陽神功呢真正的功法大成的技術(shù)是從底層上去理解,那種工程師和碼農(nóng)的區(qū)別就在于對底層的理解,當(dāng)你寫完一行代碼,或者你遇見一個解決的速度取決于你對底層的理解。 寫在前面 如果說JavaScript是一本武學(xué)典籍,那么原型鏈就是九陽神功。在金庸的武俠小說里面,對九陽神功是這樣描述的:練成「九陽神功」后,會易筋洗髓;生出...
閱讀 1286·2021-11-15 18:14
閱讀 3175·2021-08-25 09:38
閱讀 2676·2019-08-30 10:55
閱讀 2708·2019-08-29 16:39
閱讀 1319·2019-08-29 15:07
閱讀 2458·2019-08-29 14:14
閱讀 826·2019-08-29 12:36
閱讀 925·2019-08-29 11:21