原型鏈-使用瀏覽器解答(我的簡單理解)

什麼是原型鏈?

原型鏈就是你定義一個函數和構建一個函數對象之間關係編程

什麼是prototype?

你能夠簡單的理解爲prototype就是各個實例化的函數對象的老媽(老媽有的就是你的,你有的不必定是老媽的)(__proto__這個屬性是函數獨有的)瀏覽器

__proto__是什麼?

比如你作題,你搞不定了喊你爸來解決,這個時候__proto__就是你爸的做用了,當你訪問一個對象的屬性的時候,他找不到那他就要說:爸這個東西我不知道啊,你能夠搞不(__proto__這個屬性是對象獨有的)函數

最後就是constructor是什麼?

這就像你家不止你一個,有你姐、你弟,那麼怎麼明確誰是誰呢,那就是constructor,它的做用就是由它來將各個對象區分開來(constructor屬性也是對象才擁有的)學習

國際慣例,上圖!


看了上面的圖,因此咱們就獲得了最經典的原型鏈等式
f1.__proto=== Foo().prototype 怎麼來的呢?由於js中全部東西都是由對象來的,而後定義了一個函數,函數的公共方法就放在prototype裏面,可能不太理解的最多就是f1.constructor爲何直接等於Foo()了,還不是由於f1中沒有constructor這個東西,而後就叫老爸f1.__proto__幫他搞,老爸才找到了這個東西

最後就是null了

本來世界什麼都沒有,神說不行啊,這我咋編程啊,而後null就成了Object的空老爸,爲何是空老爸呢?由於其餘對象的老爸(proto)都或多或少可以幫忙解決問題,可是Object的老爸是null那你想從null中間掏出點什麼屬性看來是不可能了。
而後就是若是咱們正常定義了一個函數應該有幾層呢? .net

這就有了所有完整的原型鏈了。 圖片引用於: blog.csdn.net/cc188688768…

在瀏覽器上操做這些才能最好學習

本人菜雞的一點理解,錯了但願大佬指導。prototype

相關文章
相關標籤/搜索