Arguments-Objekt mit push() erweitern
moosi
- javascript
0 Siechfred0 Dieter Raber0 peterS.0 moosi
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
Привет 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
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
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
Danke,
jetzt hab ich genau gelesen und auch kapiert. Manche brauchen halt etwas länger!
Moosi