Announcement

Collapse
No announcement yet.

Zugriff auf Klassenvariablen in eigener Methode

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf Klassenvariablen in eigener Methode

    Hallo,
    versuche gerade mit ECMAScript 6, wo man (vermeintlich) einigermassen schön objektorientiert programmieren kann, wie man sich das in anderen Programmiersprachen gewohnt ist, auf die eigenen Klassenvariablen zuzugreifen.
    Leider ist "this" in Javascript anders gelöst und zeigt immer auf den aktuellen namespace.
    Verschiedenste Versuche im untenstehenden Code führten nicht zum Erfolg, auch nicht mit bind(). Hier ist das Problem wahrscheinlich, dass ich die Methode redraw von ausserhalb aufrufe.
    Im Aufruf der Funktion redraw wird entweder svgMain, oder setAttribute() nicht erkannt.
    Kann mir jemand sagen, wie ich in der Funktion redraw auf meine Klassenvariablen (z.B. svgMain) zugreifen kann?
    Code:
    classBaseChart {
      constructor(acontainer) {
      varcontainer=acontainer;
      varchartWidth=window.innerWidth;
      varchartHeight=window.innerHeight;
        varsvgMain=this.createSvgElement('svg', {
      style:'font-family: Arial, sans-serif;',
      width:600,
      height:500,
      fill:"yellow"
      });
        container.appendChild(svgMain);
      svgMain.setAttribute("height", chartHeight-20);
        window.onresize=this.redraw();
      }
        redraw() {
      chartHeight=window.innerHeight;
      svgMain.setAttribute("height", chartHeight);
      }
       
      createSvgElement(tag, attributes) {
      varelement=document.createElementNS('http://www.w3.org/2000/svg', tag);
      for(varkeyinattributes) {
      element.setAttribute(key, attributes[key]);
      }
      returnelement;
      }
        }

  • #2
    Hellbaue Schrift auf grauem Grund?

    Nach
    https://www.w3schools.com/js/tryit.a...s_classes_init

    IMHO fehlt zwischen class und BaseChart ein Leerzeichen.

    this.....
    sollte nach o.a. Beispiel gehen
    Zuletzt editiert von Christian Marquardt; 14.07.2019, 11:03.
    Christian

    Comment


    • #3
      Hallo Christian,
      ich kann auch nichts für die Farben, habe den code mit [ code ] [ /code ] eingebunden (hier mit Leerzeichen dargestellt, weil sonst interpretiert). Auch die Leerschläge hat es teilweise verschluckt.
      this geht eben nicht, das ist ja eben mein Problem. this funktioniert nicht so wie sonst, sondern nur im gerade existierenden namespace, zum Beispiel nur in der aufgerufenen Funktion. Noch schlimmer wird es bei funktionszeigern...
      Zuletzt editiert von javango; 14.07.2019, 11:35.

      Comment

      Working...
      X