Setzen von unbekannten Properties behandeln
Jiess
- javascript
1 1UnitedPower0 Jiess
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.
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
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.
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