鍍金池/ 問答/HTML/ Javascript es6 class 類,子類修改父類的方法?

Javascript es6 class 類,子類修改父類的方法?

// 定義父類
class faTher {

constructor(Fname){
    this.Fname = Fname
}

fangfa1() {

alert(this.Fname)

}
fangfa12 () {

console.log(this.Fname)

}
}

// 定義子類繼承父類
class Son extends faTher{

constructor(Fname, sub){
    super(Fname)
    this.sub = sub
}
fangfa2() {
    return  super.fangfa1()  // 調(diào)用父類方法   
    我怎么在子類中修改父類的方法呢 
    比如父類方法的fangfa1只是彈出了Fname,而子類我又多一個(gè)sub 屬性,
    如何修改父類的fangfa1方法 讓子類的sub+Fname一起彈出
}
fangfa11() {
    alert(this.Fname + this.sub);
}

}
var son1 = new Son('123', '321')
son1.fangfa2()

回答
編輯回答
雨萌萌

子類是無法修改父類的方法的哦,只能夠覆蓋父類的方法。
你想要警告框輸出Frame和sub的話,可以在Son中重新定義一個(gè)fangfa1方法,在里面寫邏輯。
代碼如下:

class Son extends faTher {
  constructor(Fname, sub) {
    super(Fname);
    this.sub = sub;
  }
  // 會(huì)把父類的fangfa1方法遮蓋掉
  fangfa1() {
    alert(this.Fname + this.sub);
  }
}
var son1 = new Son("123", "321");
// 這里調(diào)用的是子類的fangfa1方法而不是父類的fangfa1方法
son1.fangfa1();

希望能偶幫助到你:)

2017年4月4日 10:33
編輯回答
凝雅

讓子類覆蓋父類的fangfa1方法,然后想做什么就做什么

class FaTher {

    constructor(Fname){
        this.Fname = Fname
    }
    fangfa1() {
        // alert(this.Fname)
        console.log(this.Fname)
    }
    fangfa12 () {

        console.log(this.Fname)
    }
}

// 定義子類繼承父類
class Son extends FaTher{

    constructor(Fname, sub){
        super(Fname)
        this.sub = sub
    }
    fangfa1() {
        super.fangfa1()  // 調(diào)用父類方法
        console.log(this.Fname + this.sub);//追加子類自已的業(yè)務(wù)
    }
    fangfa11() {
        // alert(this.Fname + this.sub);
        console.log(this.Fname + this.sub)
    }
}
var son1 = new Son('123', '321')
son1.fangfa1()
2017年11月19日 21:01
編輯回答
雅痞

這樣呢

    fangfa1(val=this.Fname) {
    
        alert(val)
    }
2017年9月16日 17:53