class類的使用

通過class關(guān)鍵字可以定義類,可以實現(xiàn)單例模式,訪問器屬性,靜態(tài)方法,extends繼承

  • 普通寫法
function Person(name, age) {
  //屬性
  this.name = name
  this.age = age
}
//方法
Person.prototype.show = function () {
  console.log(this.name, this.age)
}
let person = new Person('張三', 20)
person.show()
  • es6 class寫法
 class Person{
  //構(gòu)造函數(shù)
  constructor(name,age){
    this.name=name
    this.age=age
  }
  //方法
  show(){
    console.log(this.name,this.age)
  }
}
let person = new Person('張三', 20)
person.show()
  • 也可以用表達式的方式來定義
let Person = class {
  constructor(name, age) {
    this.name = name
    this.age = age
  }
}
let person = new Person('張三', 20)
console.log(person.name)
  • 單例模式:用的不多
let Person = new class {
  constructor(name, age) {
    this.name = name
    this.age = age
  }
}('張三', 20)
console.log(Person.name, Person.age)
  • 訪問器屬性(get,set)
class Person {
  constructor(name, age) {
    this.name = name
    this.age = age
    this.ageText = ''
  }
//set監(jiān)聽屬性值的變化,設(shè)置值
  set age(val) {
    //console.log(val)
    if (val >= 18)
      this.ageText = '成人'
    else
      this.ageText = '未成年'
  }
  //get獲取值
  get age() {
    return this.ageText
  }
}
let person = new Person('張三', 20)
person.age = 30 //改變值
console.log(person.ageText)
  • extend是繼承 super可調(diào)用父類
//父類(基類)
class Person {
    constructor(name) {
        this.name = name
    }
    run() {
        console.log('人類在跑步')
    }
}
//子類(派生類)
class SuperMan extends Person {
    constructor(name) {//不寫constructor,默認調(diào)用父類
        super(name)//調(diào)用父類Person 的 constructor(name)
    }
    run() {
        super.run()//調(diào)用繼承父類方法
        console.log(this.name + '在跑步')
    }
}
let s1 = new SuperMan("超人")
console.log(s1.name)
s1.run()//自己沒有的方法會查詢調(diào)用繼承父類,自己有就調(diào)用自己
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容