當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS面向对象——原型式继承函数、寄生式继承函数、寄生组合式继承
生活随笔
收集整理的這篇文章主要介紹了
JS面向对象——原型式继承函数、寄生式继承函数、寄生组合式继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、原型式繼承函數
回顧一下JavaScript想實現繼承的目的:重復利用另外一個對象的屬性和方法.
最終的目的:student對象的原型指向了person對象;
二、寄生式繼承函數
寄生式(Parasitic)繼承是與原型式繼承緊密相關的一種思想, 并且同樣由道格拉斯·克羅克福德(Douglas
Crockford)提出和推廣的;
- 寄生式繼承的思路是結合原型類繼承和工廠模式的一種方式;
- 即創建一個封裝繼承過程的函數, 該函數在內部以某種方式來增強對象,最后再將這個對象返回;
三、寄生組合式繼承
現在我們來回顧一下之前提出的比較理想的組合繼承
組合繼承是比較理想的繼承方式, 但是存在兩個問題:
事實上, 我們現在可以利用寄生式繼承將這兩個問題給解決掉.
- 你需要先明確一點: 當我們在子類型的構造函數中調用父類型.call(this, 參數)這個函數的時候, 就會將父類型中的屬性和方法復制一份到了子類型中. 所以父類型本身里面的內容, 我們不再需要.
- 這個時候, 我們還需要獲取到一份父類型的原型對象中的屬性和方法.
**能不能直接讓子類型的原型對象 = 父類型的原型對象呢? **
- 不要這么做, 因為這么做意味著以后修改了子類型原型對象的某個引用類型的時候, 父類型原生對象的引用類型也會被修改.我們使用前面的寄生式思想就可以了
實現子類(Student)繼承父類(Person)的函數的核心代碼:
總結
以上是生活随笔為你收集整理的JS面向对象——原型式继承函数、寄生式继承函数、寄生组合式继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八、PHP框架Laravel学习笔记——
- 下一篇: Packet Tracer 5.0 建构