Способ № 1 — Функция переворачивания строки через spread, revese и join
function reverseStr(str){ return [...str].reverse().join("") }
Логика работы функции
Есть строка:
var stroka = 'tpircSavaJ'
Все строки в JavaScript являются итерируемыми объектами, а значит могут быть приведены к массиву. Воспользуемся оператором троеточия.
var massiv = [...stroka]
Теперь в переменной massiv находится массив из символов строки.

Его последовательность элементов совпадает с последовательностью символов в строке. Сейчас мы можем воспользоваться методом reverse() и перевернуть массив.
massiv.reverse()
Теперь элементы отзеркалились — последний стал первым.

Чтобы обратно вернуть строку, нам нужно воспользоваться методом join() и передать в качестве разделителя пустую строку. Она пустая потому что мы хотим слепить букву к букве (символ к символу).
massiv.reverse().join("")

В результате мы перевернули строку и получили слово «JavaScript
» из слова «tpircSavaJ
»
Собственный метод для объектов-прототипов String
String.prototype.reverseStr = function(){ return [...this].reverse().join("") }
Пример работы метода и его вызова:

Способ № 2 — через цикл for
У всех строк есть свойство длины — «length«. Мы можем перевернуть строку при помощи самописной функции и цикла for:
function reverseStr(str){ var a = ""; for (i = 0; i < str.length; i++){ a += str[(str.length - 1) - i]; } return a; }
Результат работы:

Собственный метод для объектов-прототипов String
String.prototype.reverseStr = function(){ var a = ""; for (i = 0; i < this.length; i++){ a += this[(this.length - 1) - i]; } return a; }
Пример работы метода и его вызова:

Информационные ссылки
Стандарт ECMAScript — Раздел «22.1 String Objects» — https://tc39.es/ecma262/#sec-string-objects
Стандарт ECMAScript — Раздел «14.7.4 The for Statement» — https://tc39.es/ecma262/#sec-for-statement