大家好,我是IT修真院深圳分院第01期學員,一枚正直善良的web程序員。
今天給大家分享一下,修真院官網 JS任務中可能會使用到的知識點:
繼承有幾種方式,分別是什么?想要實現(xiàn)繼承可以使用什么方法?
1.背景介紹
起源:Simula67語言
對象:“無序屬性的結合,其屬性值可以包含基本值、對象或者函數”。
面向對象編程(OOP):核心思想是將各種復雜關系,抽象成一個個對象,然后由對象之間的分工合作,完成對真實世界的模擬。
2.知識剖析
JavaScript語言的對象體系,不是基于“類”,而是基于構造函數(constructor)和原型(prototype)
原型對象:只要創(chuàng)建一個新函數,就會根據特定的規(guī)則為該函數創(chuàng)建一個prototype屬性指向其原型對象,默認情況下原型對象會自動獲得一個constructor屬性,該屬性包含一個指向prototype屬性所在函數的指針
構造函數:本身是一個函數,出于創(chuàng)建特定類型新對象的目的而定義的,內部使用this變量,需要和new配合使用來創(chuàng)建實例,this變量會綁定在實例對象上。
封裝模式:將“屬性”和“方法”封裝成對象的模式,即創(chuàng)建對象的方式
繼承概念
許多OO語言都支持兩種繼承方式:接口繼承和實現(xiàn)繼承,接口繼承只繼承方法簽名,實現(xiàn)繼承則繼承實際的方法
3.常見問題
js如何實現(xiàn)繼承?
4.解決方案
Cat如何繼承Animal的species屬性
5.擴展思考
ES6中JavaScript擁有類的概念了,參考java等語言思考JavaScript如何使用類來簡化封裝、繼承。
6.參考文獻
參考:阮一峰的網絡日志
參考:JavaScript高級程序設計
7.更多討論
Q:繼承一般用到什么地方
A:通常在一般的項目里不需要,因為應用簡單,但你要用純js做一些復雜的工具或框架系統(tǒng)就要用到了,比如webgis、或者js框架如jquery、angular、vue什么的,不然一個幾千行代碼的框架不用繼承得寫幾萬行,甚至還無法維護
詳見視頻:
繼承有幾種方式,分別是什么?想要實現(xiàn)繼承可以使用什么方法?_騰訊視頻