Zum Inhalt springen

JavaScript: Objekte erstellen [Frage]


Empfohlene Beiträge

Hallo, alle zusammen

ich hab ein Problem, womit ich mich heute schon die ganze Zeit beschäftige - bin nur leider nicht auf die Lösung gekommen...

also, fang ich mal von vorne an:

um mein Anliegen etwas anschaulicher zu machen, hab ich einen kleinen Codesnippet erstellt, der es euch hoffentlich näherbringt:


<html>

    <body>

        <div id="solution"></div>

        <script>

            function calc() {

                this.add = function( a, b, id ) {

                    var c = a + b;

                    document.getElementById( id ).innerHTML = c;

                }

                this.mul = function( a, b, id ) {

                    var c = a * b;

                    document.getElementById( id ).innerHTML = c;

                }

            }


            var calc = new calc;


            calc.add( 2, 3, "solution" );

        </script>

    </body>

</html>

Nicht wunder! Da ist nichts falsch und es klappr auch alles =) Aber ich versuche das ganze etwas anders zu machen, was mir nicht so gelingt:

<html>

    <body>

        <div id="solution"></div>

        <script>

            function calc( id ) {

                this.add = function( a, b ) {

                    var c = a + b;

                    document.getElementById( id ).innerHTML = c;

                }

                this.mul = function( a, b ) {

                    var c = a * b;

                    document.getElementById( id ).innerHTML = c;

                }

            }


            var calc = new calc;


            calc( "solution" ).add( 2, 3 );

        </script>

    </body>

</html>

Ich hoffe ihr wisst was ich meine und könnt mir helfen...

danke im voraus!

__

Diese Frage habe ich schon in www.informatikforum.de gestellt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

und wenn du "solution" beim erzeugen des objektes übergibst?

ich geb zu das ich das so noch nich versucht habe, aber wenn wir mal paralellen zu anderen sprachen ziehen sähe das sinnvoller aus.

weiterhin selbst wenn das sorum funktionieren könnte, fehlt in den funktionen die variable id. da du sie ja nirgendwo in die klasse schiebst.

und im grunde nein, ich weiß eigentlich nicht was du meinst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

erst einmal, danke für die Antwort!

Ich wusste bereits, dass man "solution" beim Erzeugen des Objekts übergeben kann, aber das habe ich nicht vor.

Ich will das alles "an einem Stück" schaffen, so wie man das mit jQuery macht - zB.:


$(document).ready(

...

)

in meinem Fall wird $(document) zu calc("solution")

und ready(...) zu add(...).

So, ich hoffe ich hab das jetzt verständlich ausgedrückt =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem wird dabei aber sein, im Falle von jQuery ist $() kein Objekt, sondern selber nur eine Funktion die ein Objekt zurückliefert, auf dem du dann die ready - Funktion aufrufst, bzw überschreibst.

calc ist in deinem Fall aber das Objekt selber, und dem kannst du halt, nachdem es erzeugt wurde, keine Parameter mehr übergeben. Ich kenne mich in JavaScript jetzt zwar auch nicht so vollständig aus, aber vom OOP technischen Standpunkt her, würde das für mich auch keinen Sinn ergeben, dass man da auch nachträglich Parameter übergeben könnte.

Was du jetzt aber machen kannst, ist dir eine Funktion zu schreiben, die dir beim Aufruf ein calc - Objekt mit der passenden ID erzeugt und zurückgibt. Das sähe dann folgendermaßen aus:


<html>

    <body>

        <div id="solution"></div>

        <script>

            function calc( id ) {

                this.add = function( a, b ) {

                    var c = a + b;

                    document.getElementById( id ).innerHTML = c;

                }

                this.mul = function( a, b ) {

                    var c = a * b;

                    document.getElementById( id ).innerHTML = c;

                }

            }

[B]

	    function calculate( id ) {

		return new calc( id );

	    }[/B]


            [B]calculate("solution")[/B].add(2, 3);

        </script>

    </body>

</html>

Dann sieht das Aufruf auch so aus wie du in haben wolltest, ob das jetzt Ressourcentechnisch sinnvoll ist, steht wohl erstmal auf einem anderen Papier.

Außerdem wird sowas spätestens dann nicht mehr funktionieren, wenn du ein Objekt mehrfach verwenden willst.

@_n4p_; Was ich dagegen auch interessant finde, ich dachte erst auch, dass er die ID in der Klasse zwischenspeichern müsste....es funktioniert aber auch so, jedenfalls bringt mir Firefox keinen Fehler auf der Fehlerkonsole.

Bearbeitet von Dragon8
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Arcsinh, hmm ja jetzt ists klar, Dragon hat deine frage denke ich beantwortet ^^

@Dragon, hmm ja das funktioniert so schon, closures eben, ich schreib die methoden immer außerhalb der "objekt-funktion" da würde das dann wohl nich mehr funktionieren, hab ich gestern, ach war ja schon heute xD, nicht mehr überblickt ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...