Hallo,
- Call ToObject(Result(2)).
Klar, der Punkt ist wohl eher, dass ein for-in bei einem String aber nie die wirklichen Eigenschaften hervorbringt, sondern den String wie einen Array aus einzelnen Zeichen wiedergibt. Für Arrays gilt dasselbe. Wo das jetzt genau steht, weiß ich nicht.
»In every case, the length property of a built-in Function object described in this section has the attributes { ReadOnly, DontDelete, DontEnum }«
Wir reden zwar nicht von function.length, aber recht hat du auch in Bezug auf string.length.
alert((s = new String("str")).hasOwnProperty("length") + " " + s.propertyIsEnumerable("length")); // true false
Warum ist jetzt z.B. string.substring() nicht enumerable? Wahrscheinlich ist das so gelöst, dass der String-Prototyp nicht enumerable ist und somit die Regel »Enumerating the properties of an object includes enumerating properties of its prototype« nicht gilt.
Mathias