moosi: Arguments-Objekt mit push() erweitern

Hallo,
nachdem ich am Freitag schon wertvolle Hilfe (Vielen Dank an alle!) erhalten habe quält mich das Problem auf den nächsten Ebene immer noch.

Ich möchte nämlich das Arguments-Objekt um ein(ige) Elemente erweitern. Dazu habe ich mit push() rumprobiert, aber das tut nicht so wie ich will. Der Vorteil wäre, dass ich so programmgesteuert Inhalt und Menge der Aufrufparameter beinflussen könnte!

Quelltextmäßig sieht das ungefähr so aus:

function func_a(para1) {

//set the arguments to call func_b
  arguments[0]=para1;
  arguments[1].push("10");

if (typeof P7_setMenuMagic1 == "function") {
     func_b.apply(null,arguments); //Hier sollten jetzt 2 Argumente
}

function func_b {
 // Und hier kommt immer nur ein Argument an !
 // es sollten aber 2 ([0] und [1] aus dem Arguments-Array) kommen
 alert(arguments.length);
}

Grüße und Dank im voraus

Moosi

  1. Привет moosi.

    Ich möchte nämlich das Arguments-Objekt um ein(ige) Elemente erweitern. Dazu habe ich mit push() rumprobiert, aber das tut nicht so wie ich will. Der Vorteil wäre, dass ich so programmgesteuert Inhalt und Menge der Aufrufparameter beinflussen könnte!

    Du solltest nie einen reservierten Namen in einem anderen als dem reservierten Kontext verwenden. Die Kollektion arguments ist reserviert und hat keine Methode "push". Erzeuge ein neues Array mit einem unverfänglichen Namen und gib dieses weiter, du wirst sehen, wie prächtig das funktioniert.

    alert(arguments.length);

    Ach ja, natürlich ist arguments[1] im vorliegenden Fall ein Array-Objekt, auf dessen Elemente du mit Hilfe von arguments[0][n] zugreifen kannst.

    Дружба!
    Siechfred

    --
    Hinweis an alle Karnevalsmuffel: Aschermittwoch ist alles vorbei.
  2. Hallo moosi,

    if (typeof P7_setMenuMagic1 == "function") {

    Du solltest vielleicht in der Lizenz mal nachschauen, was Project Seven darueber denkt, wenn Du deren Scripte veraenderst, und sei es auch fuer den Eigenbedarf.

    Gruß,

    Dieter

  3. hallo again moosi,

    nachdem ich am Freitag schon wertvolle Hilfe (Vielen Dank an alle!) erhalten
    habe quält mich das Problem auf den nächsten Ebene immer noch.

    Ich möchte nämlich das Arguments-Objekt um ein(ige) Elemente erweitern.
    ...

    ... dann hast Du moeglicherweise die ueber den thread verlinkten erklaerungen -
        http://forum.de.selfhtml.org/archiv/2004/11/t95223/#m577485 -
        zu "Function.apply" von Georg Maass nicht oder nur oberflaechlich gelesen -
        http://gml-modul.sourceforge.net/cgi-bin/gmL?Sprache=en&domain=dhtml-tutorial&webpage=152.

    auszug zitat:

    "... Die apply-Methode akzeptiert auch noch ein zweites Funktionsargument.
        Dieses zweite Funktionsargument, muß ein Array  oder ein Array artiges Objekt
        wie z.B. das arguments-Objekt sein und dient als Container für die Funktions-
        argumente der Funktion, die aufgerufen wird."

    nimm einfach den kuerzesten, von Siechfred schon vorgeschlagenen weg:
        https://forum.selfhtml.org/?t=95521&m=579636

    gute nacht - peterS. - pseliger@gmx.net

    --
    ie:( fl:) br:> va:| ls:& rl:| n4:} ss:} de:µ js:} zu:]
    1. Danke,

      jetzt hab ich genau gelesen und auch kapiert. Manche brauchen halt etwas länger!

      Moosi