Hallo Don,
Sag bloß, die for-Schleife bewirkt ebenfalls eine temporäre Umwandlung des Primitives in ein Objekt?
ECMAScript The for-in Statement:
»The production IterationStatement : for ( LeftHandSideExpression in Expression ) Statement is evaluated as follows:
1. Evaluate the Expression.
2. Call GetValue(Result(1)).
3. Call ToObject(Result(2)).
...«
»The operator ToObject converts its argument to a value of type Object according to the following table:
...
String – Create a new String object whose [[value]] property is set to the value of the string. See 15.5 for a description of String objects.«
Dann bleibt zumindest noch der erste Teil deiner Aussage falsch, da die length-Eigenschaft bewiesermaßen doch nicht iterable ist.
Ich hab hier keine Ahnung, was Ihr zwei genau mit iterable meint. Dass die Eigenschaft nicht enumiert wird? Klar:
»In every case, the length property of a built-in Function object described in this section has the attributes { ReadOnly, DontDelete, DontEnum }«
ECMAScript The for-in Statement (fortgeführt):
»5. Get the name of the next property of Result(3) that doesn't have the DontEnum attribute. If there is no such property, go to step 14.«
Tim