摘要:首先捋清楚類和對象的關系類比如人類,指的是一個范圍對象比如某個人,指的是這個范圍中具體的對象中的作為構造函數時,就是一個類,通過操作符,可以返回一個對象。
JS中的類與類的繼承
我們知道,JS中沒有類或接口的概念,即不能直接定義抽象的類,也不能直接實現繼承。不過,為了編程的方便,我們可以在 JS 中模擬類和繼承的行為。
首先捋清楚類和對象的關系:
類:比如人類,指的是一個范圍; 對象:比如某個人,指的是這個范圍中具體的對象
js中的function作為構造函數時,就是一個類,通過new操作符,可以返回一個對象。
類的聲明:
第一種:傳統構造函數聲明
function Animal(){ this.name = "tiger" }
第二種:ES6中的class聲明
class Animal{ constructor(){ this.name = "tiger" } }
生成實例:
雖然類的聲明有多種方式不盡相同,但是類生成實例相同
new Animal, new Animal2 // 沒有參數時候 ()可以省略
類的繼承的2種方式(主要說明es5傳統構造函數的方式):
第一種:借助構造函數實現繼承
原理
子類繼承父類,通過call/apply改變父類構造函數的this指向
缺點
只實現了部分繼承,僅繼承了父類的屬性,并沒有繼承父類的原型對象上<原型鏈上>的方法
第二種:借助原型鏈實現繼承
原理
通過繼承__proto__實現原型鏈繼承:
1 在當前Child2實例上查找dance方法
2 發現沒有 就會去 proto 上面去找dance方法
3 Child2實例的 proto === Parent2實例
4 去Parent2實例上查找dance方法 發現沒有
5 去Parent2實例的 proto 查找dance方法
6 找到。
缺點
如果實例兩個對象 改變其中一個對象的屬性/方法 另一個對象也會跟著改變(因為改變的是原型鏈)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98209.html
摘要:前言是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。面對對象基本概述概述是基于面向過程的變成思想,是對面向過程的一種封裝。面對對象開發就是不斷的創建對象,使用對象,指揮對象做事情。面對對象設計其實就是在管理和維護對象之間的關系。 前言 java是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。 面對對象,主要包括:面向對象思想,類與對象及其使用,對象的內存圖,成...
摘要:引申意義子類可以擴展父類的功能,但不能改變父類原有的功能。含義當子類的方法實現父類的方法時重寫重載或實現抽象方法,方法的后置條件即方法的輸出返回值要比父類更嚴格或相等。優點約束繼承泛濫,開閉原則的一種體現。降低需求變更時引入的風險。 0x01.開閉原則 定義:一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉 要點: 當變更發生時,不要直接修改類,而是通過繼承擴展的方式完成變...
摘要:構造類以及繼承構造函數方法該種方式下的繼承封裝一個函數綁定復制繼承對象創建方法類的實現該種方式下的繼承極簡主義法實現一個類睡覺睡覺類的私有屬性和方法在方法中,只要不是定義在對象上的方法和屬性,都是私有的該變量只能通過公有方法來讀取類的數據共 構造類以及繼承 構造函數方法 function Person(name) { this.name = name } Person.pro...
閱讀 785·2023-04-26 00:30
閱讀 2689·2021-11-23 09:51
閱讀 1045·2021-11-02 14:38
閱讀 2560·2021-09-07 10:23
閱讀 2243·2021-08-21 14:09
閱讀 1363·2019-08-30 10:57
閱讀 1603·2019-08-29 11:20
閱讀 1149·2019-08-26 13:53