ThorstenM: window[function] (array?!)

Hallo!

Die Überschrift erklärt mein Problem hoffentlich ein bisschen. Ich habe ein Array und möchte die einzelnen Teile nun als Attribute für eine Funktion übergeben.

Also statt …

  
window['meineFunktion'] (array)  

… soll das übergeben werden:

  
window['meineFunktion'] (array[0], array[1], array[2])  

Da ich nicht weiß, wie viele Teile das Array hat, muss es natürlich dynamisch gehen. Geht so etwas?

Danke!

  1. Hallo,

    window['meineFunktion'] (array)

    Wieso nicht?  
      
    
    > Danke!  
    
    mfg, Flo
    
    -- 
    Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...  
    sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|  
    \*Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
    
    1. » Wieso nicht?

      Na weil dann in der Ziel-Funktion die Attribute nicht direkt abrufbar sind, sondern nur als Array.

      1. Hallo,

        Wo ist da das Problem?

        mfg, Flo

        --
        Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
        sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
        *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
        1. Entschuldige, aber was sollen diese Fragen? Ich möchte wissen, wie ich ein Array als einzelne Attribute übergeben kann und nicht erörtern, warum ich das so mache.

          1. Entschuldige, aber was sollen diese Fragen?

            Die Fragen sollen uns dabei helfen, dir dabei zu helfen, die beste angemessene Lösung zu finden.

            Ich möchte wissen, wie ich ein Array als einzelne Attribute übergeben kann

            funktion.apply(null, array);

            und nicht erörtern, warum ich das so mache.

            Obige Lösung ist neunundneunzig Prozent nicht die geeignetste und sauberste. Aber dazu müsste man eben deinen konkreten Anwendungsfall kennen. Vertraue einfach mal der Erfahrung von anderen, wenn sie nach dem Zweck fragen.

            Mathias

            1. » Die Fragen sollen uns dabei helfen, dir dabei zu helfen, die beste angemessene Lösung zu finden.

              Wenn dem man so wäre. Tatsächlich sieht es meistens so aus, dass man sich hier als Fragender erst einmal für sein Vorhaben rechtfertigen muss und am Ende doch niemand eine Antwort weiß. Außer …

              » funktion.apply(null, array);

              … Du kommst mal wieder zufällig vorbei und hast, wie so oft, eine kompetente Antwort ;-) Danke!

              » Obige Lösung ist neunundneunzig Prozent nicht die geeignetste und sauberste. Vertraue einfach mal der Erfahrung von anderen, wenn sie nach dem Zweck fragen.

              Das tue ich, sonst würde ich hier gar nicht erst fragen. Denn eigentlich finde ich den Anspruch, nicht einfach für Problem XY eine Funktion XY zu empfehlen, sondern dem Problem auf den Grund gehen zu wollen, sehr gut. Häufig ist man ja verleitet, mit einer Funktion das Problem zu lösen, obwohl die Wurzel allen Übels eher in der Struktur liegt, die so eine Funktion überhaupt erst notwendig macht. Aber grundsätzlich bei einem Fragenden davon auszugehen halte ich für falsch – und diese Sitte scheint sich hier mittlerweile manifestiert zu haben. Ein Kompromiss wäre gut: Antwort rausrücken und dann die Diskussion anstoßen, ob das Problem nicht anders zu lösen ist.

              1. Tatsächlich sieht es meistens so aus, dass man sich hier als Fragender erst einmal für sein Vorhaben rechtfertigen muss und am Ende doch niemand eine Antwort weiß.

                Dass trotz Nachfragen am Ende keine Lösung rauskommt, kommt halt manchmal vor. Das macht die Nachfragen nicht unnütz. Wenn die Aufgabenstellung klar ist und es eine offensichtliche Standardlösung gibt, wird diese hier auch innerhalb kürzester Zeit gepostet. Nachfragen gibt es nur, wenn die Aufgabestellung unklar ist und/oder keine unproblematische Standardlösung existiert. Wenn jemand eine unlösbare Frage stellt, dann antworte ich auch nicht nur mit »Nein, geht nicht«, sondern frage stattdessen »was hast du eigentlich vor?«, weil ich dem Fragesteller zu einer Lösung verhelfen will.

                ... obwohl die Wurzel allen Übels eher in der Struktur liegt, die so eine Funktion überhaupt erst notwendig macht. Aber grundsätzlich bei einem Fragenden davon auszugehen halte ich für falsch

                Solcher Einsatz von apply/call ist ein Trick, ein Workaround. Eine Struktur, die einen zu solchen obskuren Tricks nötigt, ist nicht grundsätzlich, sondern mit Gründen in Frage zu stellen. Wenn ich beide »Seiten« des Codes entwerfen kann, und diese Verfügungsgewalt nehme ich bei Fragenden an, versuche ich solche Tricks natürlich zu unterbinden. Es kann natürlich sein, dass man eine fremde API anspricht bzw. eine feste API implementieren muss. Dann fehlt einem die Verfügungsgewalt - sollte man beim Fragestellen gleich anmerken.

                Mathias