Properties vor 'for/in'-Schleifen verstecken

Hallo allerseits,

angenommen ich wollte bei folgendem Objekt

var myobj = {‚x‘: 1, ‚y‘: 2, z: ‚3‘}

erreichen, dass in einer „for a in myobj“-Schleife z. B. das „z“-Property ignoriert wird. Wie würde ich das denn hinkriegen, ohne das in jeder „for/in“-Schleife explizit abfragen zu müssen (also sinngemäß irgendwie das Property-Flag ‚DontEnum‘ von ‚z‘ per Laufzeit auf true setzen)

Danke und Gruß
Natascha

PS: Ist nur 'n Beispiel, eigentlich geht’s darum, dass ich den Object-Prototypen zu erweitern will und trotzdem noch Hashtabels durch Objekte simulieren will, ohne ständig „hasOwnProperty“ verwenden zu müssen …

Hi,

Wie würde ich das denn
hinkriegen, ohne das in jeder „for/in“-Schleife explizit
abfragen zu müssen

was unterscheidet ‚z‘ von allen anderen Properties?

Cheatah

… dass es nicht in der „for/in“-Schleife verwendet werden soll.

Vielleicht wird hier das Problem klarer:

Object.prototype.supertolleObjectErweiterung = function() {/* … */}

var assocArr = {‚x1‘: 1, ‚x2‘: 2}

for (x in assocArr)
{
// Die naechste Zeile hier wuerde ich gerne immer vermeiden
if (!assocArr.hasOwnProperty(x)) continue;
alert(x);
}

Thanks
Natascha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

was unterscheidet ‚z‘ von allen anderen Properties?

… dass es nicht in der „for/in“-Schleife verwendet werden
soll.

hm. Du musst zugeben, dass dies kaum eine Basis für einen generischen Automatismus ist :smile:

Vielleicht wird hier das Problem klarer:

Leider nicht wirklich. Du verdeutlichst noch einmal Dein Vorhaben, welches mir bereits klar war, aber nicht unbedingt, wo dabei Dein Problem liegt (bzw. warum es ein Problem ist).

// Die naechste Zeile hier wuerde ich gerne immer vermeiden

Warum eigentlich? Sie ist recht effizient.

Cheatah