1. Object String согласно спецификации - это экзотический обьект. Что означает, что поведение этого обьекта, хотя-бы в одном из 12 стандартных поведений обьекта переопределено.
Одно из таких поведений как раз касается поведения в случае поиска данных которых связаны с ключами из множества indexed property. (Если не до конца корректно и максимально доходчиво то это множество числовыми ключей из диапазона 0 - 2^32 - 1. Некорректно потому - что в JS не существует числовых ключей у Object. Только ключи типа String и Symbol)
Это поведение, возвращает substring string.
Что это означает:
Если отвечать на вопрос строго формально, то с точки зрения спецификации, при создании Object String под каждый ключ, не создается отдальная строка. Геттер это делает только тогда, когда произошел запрос по конкретному индексу.
При этом, тот самый геттер, возвращает именно строку - то есть формально ее создает.
В результате первый подводный камень - до тех пор пока, не было обращения по конкретному индексу, спецификация не требует создания отдельной строки на каждый символ (Code Unit)
В то же время при обращении по индексу, такая строка должна быть создана.
Как следствие, попытка вызова любого console.dir, так как он показывает все что связано с каждым индексом, формально обязан создать все строки - так как должен обратиться к каждому геттеру.
То есть создать три строки: 'a', 'b', 'c'
Это все еще не все
Все что сказано Выше касается спецификации. А что в реальности V8?
В реальности V8, уже существуют описания для символов из диапазона US ASCII .
То есть при обращению к строке вида:
var theStr = `abc`;
var theFirst = theStr[0];
ничего страшного не случится, потому что обьект описывающий US ASCII - "a" уже заранее создан. И мы всего лишь свяжем идентификатор с ссылкой окторая давно создана.
То есть даже в случае
var theStr = `abc`;
console.dir( theStr );
ничего страшного не будет, так как для US ASCII a, b, c - все обьекты созданы еще на старте V8.
И проблемы могут начаться только там, где внутри V8, на момент старта не создано заранее готовых обьектов для Code Unitov используемых в строке.
Например кирилицы.