¿Es la subcadena de Javascript virtual?

Si tenemos una cadena enorme, llamadastr1, digamos 5 millones de caracteres de largo, y luegostr2 = str1.substr(5555, 100) así que esostr2 Tiene una longitud de 100 caracteres y es una subcadena de.str1 a partir de 5555 (o cualquier otra posición seleccionada al azar).

Cómo almacena JavaScriptstr2 ¿internamente? ¿Se copian los contenidos de la cadena o la nueva cadena es algo virtual y solo se almacena una referencia a la cadena y los valores originales para la posición y el tamaño?

Sé que esto depende de la implementación, el estándar ECMAScript (probablemente) no define lo que está bajo el capó de la implementación de la cadena. Pero quiero saber de algún experto que conoce V8 o SpiderMonkey desde adentro lo suficientemente bien como para aclarar esto.

Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta