If a script returns a result or passes a function a String object (not a value) -- like "new String('Test')". And that ObjC -[JSValue toObject] method is called, it will return a NSDictionary with keys for each character instead of an NSString. This was surprising to me, but it does make sense at a fundamental level. I would just expect an NSString since it is not that useful as an NSDictionary.
<rdar://problem/102727308>