1. 程式人生 > 實用技巧 >類與繼承

類與繼承

ES5中:

function People(name,age,number){
  this.name = name
  this.age = age //例項屬性
  People.number = number //靜態屬性
}
//例項方法
People.prototype.showName = function(){
  console.log('我的名字是'+this.name)  
} 
//靜態方法
People.getNumber = function(){
  return '666'
}

function Student(name,age,major){
  People.call(this
,name,age) //繼承屬性 this.major = major } Student.prototype = new People() Student.prototype.constructor = Student //繼承方法

ES6中:

class People{
  constructor(name,age){
    this.name = name
    this.age = age
    this._sex = -1 //引入_sex的原因的為了避免在set中造成死迴圈
  }
  //當獲取屬性的時候涉及到業務邏輯操作,可利用get set(可繼承)
  get sex(){
    
if(this._sex === 0){ return 'famale' }else if(this._sex === 1){ return 'male' }else{ return new Error('輸入錯誤') } } set sex(value){ if(value === 0 || value === 1){ this._sex = value } } showName(){ console.log('我的名字是'+ this.name) } //靜態方法,可繼承(不能用static定義靜態屬性)
static getCount(){ return 'xx' } } const p = new People('zs',18) p.showName() p.sex = 1 console.log(p.sex) console.log(People.getCount()) class Student extends People{ constructor(name,age,major){ super(name,age) this.major = major } } const s = new Student('ls',22,'code') console.log(s.name,s.age,s.major) s.showName() s.sex = 0 console.log(s.sex) console.log(Student.getCount())