Arcsinh Geschrieben 24. Mai 2010 Geschrieben 24. Mai 2010 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. Zitieren
_n4p_ Geschrieben 24. Mai 2010 Geschrieben 24. Mai 2010 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. Zitieren
Arcsinh Geschrieben 24. Mai 2010 Autor Geschrieben 24. Mai 2010 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 =) Zitieren
Dragon8 Geschrieben 25. Mai 2010 Geschrieben 25. Mai 2010 (bearbeitet) 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 25. Mai 2010 von Dragon8 Zitieren
_n4p_ Geschrieben 25. Mai 2010 Geschrieben 25. Mai 2010 @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 ^^ Zitieren
Arcsinh Geschrieben 25. Mai 2010 Autor Geschrieben 25. Mai 2010 GROßARTIG! Das ist genau das, was ich gesucht habe ! Vielen dank Zitieren
Empfohlene Beiträge
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.