1) потому что массив это в то же время обьект, причем не ассоциативный массив. А for..in - это для обьектов. И не надо мешать массивы и ассоциативные массивы (обьекты): если нужен набор значений - для этого есть массивы и for (var i=0; i<...; i++), а для словарей - есть ассоциативные массивы и for..in
2) потому что у Number такой toString и потому что обьекты - это больше чем ассоциативные массивы. И Number, Boolean, String тоже самому создавать не стоит, потому что иначе надо будет тип как-то так проверять: typeof v == 'number' || v instanceof Number
|