Hallo Mathias,
Natürlich ist length immer iterable, aber nur bei String-Objects, weil bei String-Primitives gar nix iterable ist.
Zuerst habe ich das einfach geglaubt, aber hartnäckig wie ich bin, dann doch noch einmal überprüft, und siehe: Obige Aussage ist anscheinend völlig falsch, Beweis:
var myString = new String('abc');
for (var prop in myString) {
alert( 'property ' + prop + ' (Constructor)' );
}
//=> Beim "richtigen" Objekt kann man über fast alle Eigenschaften iterieren, aber "length" ist nicht dabei.
myString = 'abc';
for (prop in myString) {
alert( 'property ' + prop + ' (Primitive)' );
}
//=> Beim Primitivling gilt dasselbe.
Sag bloß, die for-Schleife bewirkt ebenfalls eine temporäre Umwandlung des Primitives in ein Objekt? Dann bleibt zumindest noch der erste Teil deiner Aussage falsch, da die length-Eigenschaft bewiesermaßen doch nicht iterable ist.
Gruß, Don P