Jiess: Setzen von unbekannten Properties behandeln

Hallo,

Für bekannte Eigenschaften/Properties von Objekten lassen sich ja entsprechende Getter/Setter definieren.

Frage: Ist das auch für unbekannte/neue Eigenschaften in JS realisierbar.

Ich habe dafür bisher keinen Ansatzpunkt gefunden.

  1. Hallo,

    Für bekannte Eigenschaften/Properties von Objekten lassen sich ja entsprechende Getter/Setter definieren.

    Frage: Ist das auch für unbekannte/neue Eigenschaften in JS realisierbar.

    Was meinst du mit unbekannten Eigenschaften?
    Neue Properties lassen sich recht einfach so erzeugen:

      
        var o = {}; // Creates a new object  
      
        // Example of an object property added with defineProperty with a data property descriptor  
        Object.defineProperty(o, "a", {value : 37,  
                                       writable : true,  
                                       enumerable : true,  
                                       configurable : true});  
        // 'a' property exists in the o object and its value is 37  
      
        // Example of an object property added with defineProperty with an accessor property descriptor  
        var bValue;  
        Object.defineProperty(o, "b", {get : function(){ return bValue; },  
                                       set : function(newValue){ bValue = newValue; },  
                                       enumerable : true,  
                                       configurable : true});  
        o.b = 38;  
        // 'b' property exists in the o object and its value is 38  
        // The value of o.b is now always identical to bValue, unless o.b is redefined  
      
        // You cannot try to mix both :  
        Object.defineProperty(o, "conflict", { value: 0x9f91102,  
                                               get: function() { return 0xdeadbeef; } });  
        // throws a TypeError: value appears only in data descriptors, get appears only in accessor descriptors  
    
    

    (Quelle: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty)

    Grüße
    -1UP

    1. Hallo,

      Für bekannte Eigenschaften/Properties von Objekten lassen sich ja entsprechende Getter/Setter definieren.

      Frage: Ist das auch für unbekannte/neue Eigenschaften in JS realisierbar.

      Was meinst du mit unbekannten Eigenschaften?

      Wenn "Foo" das Objekt sei, würde ich gerne innerhalb von diesem
      beim Ausführen von z.B. Foo.bar = baz; entsprechend reagieren können.
      Im Prinzip das was mit PHP und __get/__set möglich ist.
      Konkret möchte ich "baz" auf bestimmte Eigenschaften prüfen bzw. selbige verändern.

      1. Du kannst getter und setter mit defineProperty machen

        Lies dir mal folgende Seite dazu durch: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty