在extends构造函数中调用函数

时间:2016-12-10 05:59:36

标签: javascript oop em

class PathController {
  constructor(){

  }

  getMainPage(){
    alert("getMainPage");
  }

  setPushState(){
    alert("setPushState");
  }
}

class MainMenu extends PathController {
  constructor (){
    // call my PathController here
    super();
    getMainPage();
    setPushState();
  }
}

let aMainMenu = new MainMenu();

我的意图是在我的MainMenu构造函数中调用我的getMainPage和setPushState,我厌倦了this.getMainPage和this.setPushState,它也不能正常工作。谁能告诉我怎么称呼它?

2 个答案:

答案 0 :(得分:1)

你的超级是你的“这个”,因为我们目前在构造函数中。以下是它的外观:

class PathController {
  constructor(){

  }

  getMainPage(){
    alert("getMainPage");
  }

  setPushState(){
    alert("setPushState");
  }
}

class MainMenu extends PathController {
  constructor (){
    // call my PathController here
    super();
    super.getMainPage();
    super.setPushState();
  }
}

let aMainMenu = new MainMenu();

但是,一旦你在构造函数之外,那么你将使用“this.getMainPage();”

答案 1 :(得分:0)

一种方法是将属性名称传递给super(),该PathController调用class PathController { constructor(fromMainMenu, ...props) { if (fromMainMenu) { for (let fn of props) { this[fn]() } } } getMainPage(){ alert("getMainPage"); } setPushState(){ alert("setPushState"); } } class MainMenu extends PathController { constructor () { // call my PathController here super(true, "getMainPage", "setPushState"); } } let aMainMenu = new MainMenu();父构造函数的函数

class SiteController extends Controller {

    public function init() {
        $this->layout = 'admin';
    }
....