Нет другого способа. Кстати либа Zepto именно поэтому не работает в IE.
Там коллекция представляет из себя массив с подмененным прототипом (как раз через __proto__ )
Кстати, возможно ли преобразовать массив в простой объект без итерирования?
То есть
//имеем массив:
var array = ["a", "b"]
//имеем пустой объект:
var object = {length:0}
/* какая-то магия ... главное без итераций */
// получаем объект:
object // {0: "a", 1: "b", length: 2}, length можно присвоить вручную