Hallo LanX,
Der Sinn deines Codes erschließt sich mir nicht ganz. Wenn ich richtig verstehe, geht es doch nur darum, die Eigenschaften/Methoden eines Objekts zu durchlaufen, ohne dabei die geerbten zu besuchen (vom Prototyp z.B.).
Dazu reicht doch folgende Funktion (ratet mal, von wem ich die habe ;):
var forOwn=function(o,f){for(var p in o){if(o.hasOwnProperty(p)){f(p,o[p]);}}};
// Beispiel:
Object.prototype.inherited = 'geerbt'; // inherited wird von jedem Objekt geerbt
var myObj = {a:1, b:2, c:3}; // "assoziatives Array", *grummel* :-(
for(var p in myObj) {alert(p + ": " + myObj[p]);} // gibt auch inherited aus :-(
forOwn(myObj, function (p,v) {alert(p + ": " + v);} ); // gibt nur a,b und c aus :-)
PS: man sollte Anfängern gar nix von Object.prototype erzählen! Je weniger davon wissen umso ...
Das stimmt, nützt aber nicht unbedingt etwas. Gerade Anfänger binden so gut wie jedes Script ein, dessen sie habhaft werden können. Wenn nur eines davon mit Object.prototype rummacht, haben sie evtl. ein Problem, das sie nicht lösen können ohne ein Wissen darum.
Gruß, Don P