Array als Variabel einer Klasse

  • Felix K. schrieb:

    Wobei ich auch nicht genau weiss warum der eventlistener in der startseiten.html nicht richtig funktioniert...
    Mit elem.addEventListener("click", Board.initGame.bind(Board)) müsste es gehen. Lies hierzu auch mal das.




    Felix K. schrieb:

    Aber diese Variabel sollte ja mal da sein und mal nicht... Je nach dem ob eine Figur auf dem Feld steht oder nicht und da weiss noch nicht genau wie ich das ausdrücken soll...
    Da Felder ja keine besondere Funktion haben, würde ich dafür keine Klasse anlegen.
    Ich würde das Board-Array mit null oder undefined befüllen und dann die Figuren-Objekte platzieren.
    null und undefined sind "falsy values" Objekte sind "truthy". Ob eine Figur auf dem entsprechenden Feld steht kann man also einfach mit
    if (board[0][0]) {... } überprüfen.
  • Zuerst Mal: JavaScript kennt keine OOP (im Sinne jeder anderen Programmiersprache).

    Allerdings trifft der Begriff "Objekt orientiere Programmierung" auf keine andere Sprache so sehr zu wie auf JavaScript, denn alles (außer Primitives) ist in JS ein Objekt. Auch Funktionen sind in JS "ausführbare Objekte". Mit dem class-Keyword erzeugt man keine Klasse, denn die gibt es nicht in JS, sondern eine Konstruktorfunktion. Es gibt keine Vererbung sondern die Prototyp-Delegation. Daher sind Klassen auch nicht notwendig.

    Das Thema der Objekterstellung und Prototyp-Delegation gehört zu den komplexesten, schwersten und wichtigsten Themen in JS. Ich verweise hier mal einfach auf MPJ.


    Felix K. schrieb:

    Aber warum?
    Weil man .addEventListener() eine Funktion zum aufrufen übergibt (also ohne ()), aber ohne Kontext. Das this in deiner Funktion würde also nicht auf Board weisen.




    Felix K. schrieb:

    Was macht die .bind() Funktion?
    Wird von MPJ erklärt. In der Kurzfassung: Es erzeugt eine neue Funktion aus deiner bestehenden, aber bindet das this auf Board.




    Felix K. schrieb:

    Kann ich auch Module schreiben?
    Ja. Wir unterscheiden zwischen packages, Common JS und ES-Module.



    Felix K. schrieb:

    Wo ist der Unterschied zwischen Modulen und Klassen?
    Ein Modul ist eine Ansammlung von Funktionalität. Es könnte mehrere "Klassen" und Funktionen beinhalten.