kostenloser Webspace werbefrei: lima-city


object set - Methode

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    heavyraptor

    heavyraptor hat kostenlosen Webspace.

    Hi,

    ich suche eine Methode, wie bei PHP, die jedes mal, wenn einen Wert neu gesetzt wird, aufgerufen wird.

    Ich habe z.B. folgendes:
    function test(id) {
     this.id   = id;
     this.name = null;
     this.src  = null; 
    }
    
    with(new test('Der Test')) {
     name = 'Der Name';
     src  = 'bla.gif';
    }


    Ich erzeuge ein Objekt names test bei dem ich dann die Werte name und src festsetzte. Sie werden Zwar festgesetzt, aber was ich zus?tzlich noch will ist, dass dabei noch z.B. eine funktion ausgel?st wird. Bei PHP geht das ja mit __set.

    Versteht jemand, was ich meine und k?nnte mir jemand helfen?

    mfg,
    hr
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. wieso legst du nicht einfach schon name und src beim erstellen des Objektes direkt fest?

    function test(id,name,src){
    this.id=id;
    this.name=name;
    this.src=src;
    weitere_funktion(this);
    }

    dann brauchst du dein with() Construct nicht.
    weitere_funktion() ist deine Funktion, die du noch einbinden willst. In JS ist sowas alles viel einfacher, da es mehr objektorientiert als PHP ist.
    weitere_funktion(this) erm?glicht dann durch den parameter, dass das neu erzeugte direkt in der weitere_funktion() verf?gbar ist und du auf seine Eigenschaften zugreifen kannst.

    was zu lesen:
    http://de.selfhtml.org/javascript/sprache/objekte.htm#eigene
  4. Vllt meinst du folgendes :
    class test {
    
      function set_var ( $array ) {
        if ( isset ( $array['id'] ) ) {
          $this -> $src = $array['id'];
        }
        if ( isset ( $array['name'] ) ) {
          $this -> $src = $array['name'];
        }
        if ( isset ( $array['src'] ) ) {
          $this -> $src = $array['src'];
        }
      }
    }
    
    $class = new test ( );
    $array = array ();
    $array['id'] = 0;
    $array['name'] = 'gif_pic';
    $array['src'] = 'img/img.gif';
    $class -> set_var ( $array );



    So und nun eine berechtigte Frage, was soll das bitte bringen???
    Au?erdem, was soll "with ()" f?r eine Funktion, bzw. ist das ?berhaupt einen PHP-Funktion. In der Online Doku und ?ber Google ist nichts zu finden und mir ist die auch g?nzlich unbekannt.

    MfG Lucas



    edit :
    Irgendwie ist der Code ganz sch?n sinnlos...
    Man k?nnte genauso gut aus der Funktion "set_var ( $array );" einfach "set_var ( $id, $name, $src );" machen....
    Aber das w?re ebenfalls sinnlos....


    edit2 :
    Verdammt nicht nur freshprince liest nicht alle Texte gr?ndlich. ;-)
    Hab mich heute morgen doch glatt verlesen, weiterhin dachte ich, dass es im PHP&MySQL Forum w?re.

    Beitrag ge?ndert am 6.01.2006 10:25 von lucas9991
  5. Autor dieses Themas

    heavyraptor

    heavyraptor hat kostenlosen Webspace.

    Hi,

    danke f?r die Hilfe, es hat mir jedoch nicht richtig weitergeholfen, lol, der Post von luca9991 war echt zum Lachen, ist nicht b?se gemeint :biggrin:.
    Was ich habe, ist ein object mit 120 variablen:

    function test(id) {
     this.id = id;
     this.name = null;
     this.src = null;
     this. .....
     ....
     // usw.
    }


    Ich will, dass eben nur die id festgelegt wird und dann der rest mit with, weil das viel einfacher ist, und weil nicht alles unbedingt ge?ndert werden muss.
    Die variablen werden dann in einen Array kopiert. Deswegen muss ich eine Funktion haben, die jedes mal, wenn ein wert ver?ndert wwird, aufgerufen wird:

    var storage = new Array();
    var i = 0;
    function test(id) {
     this.id = id;
     this.name = null;
     this.src = null;
     // this. .....
     // ....
     // usw.
    }
    test.prototype.diese_funktion_jedesmal_aufrufen = function(arg) {
     storage[i] = arg;
     i++;
    }
    
    with(new test('test')) {
     src = 'bla.gif';
     irgendetwas = 5;
     // ....
     // usw.
    }


    Fersteht ihr? Eigentlich das genaugleiche wie bei PHP. Aber leider ist ja die Objeckt Unterst?tzung f?r JAvascript echt zum *********.
    Kann man das ?berhaupt mit Javascript achen?

    mfg,
    hr

    Beitrag ge?ndert am 6.01.2006 14:03 von heavyraptor
  6. JavaScript ist objektorientierter als PHP und daher verwendet PHP eher eine seltsame Syntax.

    Also, du hast alle variablen, die du einem Objekt zuweisen willst in einem array?

    Ich w?rde die Wertzuweisungen folgenderma?en vornehmen:
    function test(id){
    this.id=id;
    this.name;
    this.src;
    //and so on
    }
    
    /*
    Die Funktion, um das Objekt zu erstellen
    Die Wertzuweisung =null ist in Javascript nicht n?tig
    */
    
    neues_objekt=new test("die id");
    /*
    Ein neues Objekt wird erstellt und mit der variable "neues_objekt" bezeichnet, mit der man dann auf das Objekt zugreifen kann
    */
    
    eigenschaften=new Array('name','src','....');
    werte=new Array("toller name","http:// ...");
    //and more ...
    /*
    erstmal gibt es ein grunds?tzliches Array  "eigenschaften" mit den Namen der Objekteigenschaften.
    
    Danach k?nnen weitere Arrays definiert werden, die f?r die jeweiligen objekte die Werte enthalten.
    */
    
    function vergeben(das_objekt,der_werte_array)
    for(i=0;i<eigenschaften.length;i++)
    {
    eval(das_objekt+'.'+eigenschaften[i]+'="'+der_werte_array[i]+'"');
    }
    
    /*
    Die Funktion erwartet 2 parameter:
    Das Objekt, welchem Werte zugewiesen werden sollen
    Das Array, wo die Werte drin stehen
    
    Mit eval() werden dann einfach die strings aus dem "eigenschaften" array in Objekte verwandelt und dann werden die entsprechenden Werte ?bergeben.
    */
    
    vergeben(neues_objekt,werte);
    /*
    schlie?lich der Funktionsaufruf mit Objekt und Werten
    */

    ich konnte die Funktion leider nicht testen, aber wenn was nicht funzen sollte, einfach posten.

    Beitrag ge?ndert am 7.01.2006 15:43 von bladehunter

    Beitrag ge?ndert am 7.01.2006 15:45 von bladehunter
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!