簡體   English   中英

在Javascript ES6中擴展子類中的父類方法

[英]Extending parent class methods in child class in Javascript ES6

我想擴展子類在父類中的特定方法的功能。 我仍然習慣於ES6中的OOP,所以我不確定這是否可行或違反規則。

我在尋找這樣的東西:

class Parent {
  constructor(elem) {
    this.elem = elem;

    elem.addEventListener((e) => {
      this.doSomething(e);
    });
  }

  doSomething(e) {
    console.log('doing something', e);
  }
}

class Child extends Parent {
  constructor(elem) {
    // sets up this.elem, event listener, and initial definition of doSomething
    super(elem)
  }

  doSomething(e) {
    // first does console.log('doing something', e);
    console.log('doing another something', e);
  }
}

本質上,我想在父方法上附加一個特定於子的回調。 有沒有一種創造性的方法來創建一個具有相同功能的全新類?

你可以使用super in方法:

doSomething(e) {
  super.doSomething(e)
  console.log('doing another something', e)
}

this在子類和父類中是相同的,並引用實際的對象,所以如果你在父代碼中調用一個方法,它將調用child的實現,如果它確實是一個孩子。 在其他語言中也是如此,例如Python和Ruby。

工作代碼:

 class Parent { constructor(elem) { this.elem = elem this.elem.addEventListener('click', (e) => { this.doSomething(e) }) } doSomething(e) { alert('doing something') } } class Child extends Parent { constructor(elem) { super(elem) } doSomething(e) { super.doSomething(e) alert('doing another something') } } let child = new Child(document.getElementById('button')) 
 <button id="button">Alert</button> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM