Если у нас есть огромная строка с именем str1
, скажем 5 миллионов символов, а затем str2 = str1.substr(5555, 100)
, так что str2
имеет длину 100 символов и является подстрокой str1
начиная с 5555 (или любым другим случайно выбранная позиция).
Как JavaScript хранит str2
внутренне? Сопоставлено ли содержимое строки или новая строка является своего рода виртуальной и сохраняется только ссылка на исходную строку, а значения для позиции и размера сохраняются?
Я знаю, что это зависит от реализации, стандарт ECMAScript (возможно) не определяет, что под капотом реализации строки. Но я хочу узнать у какого-то специалиста, который знает V8 или SpiderMonkey изнутри достаточно хорошо, чтобы прояснить это.
Спасибо