我們知道,js中沒有類或介面的概念,即不能直接定義抽象的類,也不能直接實現繼承。不過,為了程式設計的方便,我們可以在 js 中模擬類和繼承的行為。
首先捋清楚類和物件的關係:
類:比如人類,指的是乙個範圍; 物件:比如某個人,指的是這個範圍中具體的物件
js中的function作為建構函式時,就是乙個類,通過new操作符,可以返回乙個物件。
類的宣告:
第一種:傳統建構函式宣告
function animal()
第二種:es6中的class宣告
class animal
}
生成例項:
雖然類的宣告有多種方式不盡相同,但是類生成例項相同
new animal, new animal2 // 沒有引數時候 ()可以省略
類的繼承的2種方式(主要說明es5傳統建構函式的方式):
第一種:借助建構函式實現繼承
原理
缺點
只實現了部分繼承,僅繼承了父類的屬性,並沒有繼承父類的原型物件上《原型鏈上》的方法
第二種:借助原型鏈實現繼承
原理
通過繼承__proto__實現原型鏈繼承:
1 在當前child2例項上查詢dance方法
2 發現沒有 就會去proto上面去找dance方法
3 child2例項的proto=== parent2例項
4 去parent2例項上查詢dance方法 發現沒有
5 去parent2例項的proto查詢dance方法
6 找到。
缺點
如果例項兩個物件 改變其中乙個物件的屬性/方法 另乙個物件也會跟著改變(因為改變的是原型鏈) js類的繼承與建立
類的建立,new 乙個function 在這個function的prototype裡面增加屬性和方法。function a food a.prototype.eat function food 原型繼承 student.prototype newperson student.prototype.co...
js類的繼承
如何實現類的繼承呢?有如下2個建構函式 function peopleclass peopleclass.ptototype function studentclass name,function peopleclass peopleclass.ptototype function studentc...
JS類的繼承
目錄 js類 寫類 繼承get set static 方法static修飾 屬性static修飾 特殊 var v parent new parent console.log v parent 就以上面的parent類為父類,寫乙個studnet繼承他 class student extends p...