ES6基于類的繼承
class Cat{//定義一個(gè)貓類,有了貓類就可以創(chuàng)建貓對(duì)象
? ? constructor(name,age){//類的構(gòu)造方法
? ? ? ? this.name = name
? ? ? ? this.age = age
? ? }
}
let cat = new Cat(“喵喵”哥艇,2)
console.log(cat.name)//喵喵
Cat.prototype.eat = function (){ 類的原型
? ? console.log("吃魚")
}
cat.eat //吃魚
//繼承
子對(duì)象可以使用父對(duì)象上的所有屬性和方法
示例:
//用戶
class User{
? ? constructor(username,password){//兩個(gè)屬性一個(gè)方法
? ? ? ? this.username = username
? ? ? ? this.password = password
? ? }
? ? login(){
? ? ? ? console.log('登錄')
? ? }
}
//管理員,有 username password login,+刪除用戶
管理員繼承普通用戶+自己的功能
class Admin extends User{
? ? delete(){
? ? ? ? console.log('刪除人')
? ? }
}
let admin = new Admin()
admin.login()//登錄
admin.delete()//刪除人
由此可見 新創(chuàng)建的admin,可以用它父級(jí)的login,和自己的delete
基于原型的繼承
ES5 繼承:prototype乡洼,沒有類只能構(gòu)造函數(shù)了
function User(username,password){//兩個(gè)屬性一個(gè)方法
? ? ? ? this.username = username
? ? ? ? this.password = password
? ? ? ? this.login = function(){
? ? ? ? ? ? ? console.log('登錄')
? ? ? ? }
? ? }
? ? //我們希望實(shí)現(xiàn)admin繼承user? 使用它上所有屬性和方法
? function Admin(username,password){?
? ? ? this.delete = function(){
? ? ? ? ? ? console.log('刪除人')
? ? ? }
? }
? //如何建立他們之間的鏈接? 思路:
? ? 1.Admin 可以使用它原型上的所有方法 prototype
? ? 2.我們希望Admin 可以使用user
? ? ? ? 就讓 Admin.prototype = new User()
? ? ? ? User 的實(shí)例一定有User構(gòu)造函數(shù)所有屬性方法
? ? ? ? 所以可以讓Admin使用User上的屬性和方法了
? ? ? ? 實(shí)現(xiàn)了基于原型的繼承
Admin.prototype = new User()? ? ?
let admin = new Admin()
admin.login()//登錄