2016-12-10 5 views
0
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(); 

meine Absicht ist, meine getMainPage und setPushState an meinem MainMenu Konstruktor, ich müde this.getMainPage und this.setPushState zu nennen, und es ist nicht so gut funktioniert. Kann mir jemand sagen, wie ich es nennen soll?Anruffunktion an sich Konstruktor

Antwort

0

Ein Ansatz wäre die Eigenschaftsnamen zu super() geben, die die Funktionen bei PathController Mutter Konstruktor aufrufen

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();

1

Ihr Super ist Ihr "Das", da wir gerade im Konstruktor sind. Hier ist, wie es aussehen sollte:

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(); 

jedoch, sobald Sie außerhalb des Konstrukteurs sind, dann würden Sie verwenden „this.getMainPage();“