Еще один вариант (он работает с IE?):
String.prototype.reverse = function() {
for (i=1,s=""; i<=this.length; s+=this.substr(-i++,1)) {}
return s;
}
EDIT:
Это без использования встроенных функций:
String.prototype.reverse = function() {
for (i=this[-1],s=""; i>=0; s+=this[i--]) {}
return s;
}
Примечание: это [-1] содержит длину строки.
Однако невозможно изменить строку на месте, так как присвоение
отдельные элементы массива не работают с объектом String (защищены?). То есть Вы можете делать присваивания, но результирующая строка не изменяется.