В JS cтрока является
встроенным фундаментальным объектом.
Это означает, что формально это объект, но к нему может быть применен особый синтаксис. И этот синтаксис обрабатывается на уровне интерпретатора языка, а не каких-либо библиотек.
Вот тут как раз случай, когда индексный оператор [idx] является иным способом вызова метода String.charAt(idx).
Это синтаксический сахар, появившийся только в ECMA-5.