Moin.
Mit Hilfe von Mozilla's JavaScript 1.7 Iterators lässt sich for...in gezielt steuern. Damit lässt sich z.B. folgendes realisieren:
<pre><script type="application/javascript;version=1.7">
~~~javascript
Object.prototype.answer = 42;
function assoc(obj) {
obj = obj || {};
function Assoc() {}
Assoc.prototype.iterator = function() {
let it = Iterator(obj);
return {
next : function() {
while(true) {
let [key, value] = it.next();
if(obj.hasOwnProperty(key))
return [key, value];
}
}
};
};
return new Assoc;
}
let a = assoc({ spam : 'eggs'});
for(let [key, value] in a) {
document.writeln(key + ' : ' + value);
}
Vielleicht findet jemand eine noch einfachere Implementierung; diese hier scheint aber bereits zu funktionieren.
Christoph