Ergebnis 1 bis 3 von 3

Thema: Extending "arguments"

  1. #1
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.993
    Renommee
    283

    Extending "arguments"

    Moin,

    ich möchte (in JavaScript) gerne das "arguments"-Objekt erweitern oder eine alternative Funktion schreiben, um wie folgt auf Funktions-Parameter zugreifen zu können.

    Code:
    function test()
    {
    	var name = [arguments.]pop("string", true);
    	var callback = pop("function", false, function() { console.log(arguments.length.toString(); });
    	var cbArgs = pop("array");
    }
    Im Prinzip wäre am besten die Angabe ohne ständige "arguments"-Wiederholung sowie ohne "arguments"-Parameter an "pop()" o.ä.

    In diesem Sinne möchte ich, dass der erste "pop()"-Parameter einem Type-Check dient, ob der Übergabe-Type gültig ist (sonst Exception),
    während der zweite (boolean) definiert, ob das Argument überhaupt notwendig ist - also bei "false"-Übergabe kann in diesem Beispiel das
    "arguments"-Objekt (ist kein echtes Array, btw) nur einen Inhalt zählen. Und zum Schluss noch möglich: ein alternativer Wert, welcher nun
    eingesetzt wird, falls eines der Argumente nicht definiert ist (wenn es also gerade optional ist).

    Nun, eine zweite Frage wäre, ob sich auf die gleiche Weise evtl. auch automatisiert die Umwandlung in ein echtes Array gestalten lässt, und
    ob das evtl. überhaupt sinnvoll ist. Wer's noch nicht wusste:

    Code:
    [].slice.call(arguments);
    Macht aus dem regulären "arguments"-Objekt ein echtes Array.

    Danke so weit, schöne Grüße; der kuchen.
    Geändert von kuchen (04.12.2017 um 06:15 Uhr)

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

  2. #2
    Registered User
    Registriert seit
    Sep 2008
    Beiträge
    403
    Renommee
    270

    AW: Extending "arguments"

    Yo Kuchen, schön, dass du immer noch hier bist

    "arguments" ist ja vom Typ "Arguments", aber der Typ ist "versteckt". Um jedoch eine "Klasse" in JavaScript zu erweitern, muss man neue Methoden in den Prototype eintragen.

    Das einfachste, was jedoch nicht möglich ist, wäre:

    Code:
    Arguments.prototype.debug = function() { console.log("Wir haben", this.length, "Argumente"); }
    Aber JavaScript ist ja extrem dynamisch, wir können ein bisschen cheaten... wir klauen uns erstmal eine Arguments-Instanz:

    Code:
    args = function() { return arguments; }()
    Die Instanz "args" hat nun eine Referenz zum Prototypen... genau was wir brauchen, in "args.__proto__".

    Darüber kann man jetzt neue Arguments-Methoden implementieren, z.B.:

    Code:
    args.__proto__.debug = function() { console.log("Wir haben", this.length, "Argumente"); }
    Die debug-Methode hast du jetzt in jeder Funktion, in jedem arguments. Zum Beispiel machste eine neue Funktion:

    Code:
    test123 = function(a,b,c) {
    	arguments.debug()
    }
    
    test123(1,2) // Console: Wir haben 2 Argumente
    Eventuell hilft dir das ja erstmal weiter, wäre auch gut, wenn du die Frage noch etwas ausführst. Liest sich sehr interessant, aber kann da noch nicht viel konkretes von ableiten.
    Über das neue Zeitalter der Gehirne eines Menschen!
    echo 'main() { char z[] = "ping "; for(;printf(z);z[1]^=6); }' > a.c; gcc a.c -o a; ./a # 16.11.2011 02:51

  3. #3
    Quantenmechaniker
    Registriert seit
    Aug 2002
    Beiträge
    1.993
    Renommee
    283

    AW: Extending "arguments"

    Code:
    ReferenceError: Arguments is not defined
    Ich wüsste auch nicht, dass "arguments" das als Basis-Klasse hätte.

    Dein Rest klingt aber schonmal ganz nett. Ich schaue mir das später mal genauer an. THX so far!

    1 2 3 4 5 6 7 8
    2 1 4 3 6 5 8 7
    3 4 1 2 7 8 5 6
    4 3 2 1 8 7 6 5
    5 6 7 8 1 2 3 4
    6 5 8 7 2 1 4 3
    7 8 5 6 3 4 1 2
    8 7 6 5 4 3 2 1

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. "Überlichtgeschwindigkeit" im Hollywood-Film "Event Horizon"
    Von 45PrivateSnafo im Forum Naturwissenschaften & Elektronik
    Antworten: 22
    Letzter Beitrag: 30.10.2009, 13:45
  2. Antworten: 2
    Letzter Beitrag: 14.09.2003, 12:09
  3. Antworten: 0
    Letzter Beitrag: 08.01.2003, 15:02
  4. Antworten: 1
    Letzter Beitrag: 03.01.2003, 13:53
  5. App.Path & "\" & "Kunden" & "\" & File1 Fehler ?
    Von Witec im Forum VisualBasic / VBScript
    Antworten: 5
    Letzter Beitrag: 29.04.2002, 21:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •