Под капотом языка строки преобразуются в объекты, а потом обратно, таким образом они имеют методы. Есть ли способ вывода строки, как объекта без преобразования, то есть со всеми свойствами, методами и т.п.?
Также при создании нового объекта класса он будет примерно такого же вида, как {key1: 124, key3: 124} и с методами например, верно?
'строка'.__proto__ - выведет прототип строки String, в котором будут его методы. (в консоле по крайней мере)
А вот сами методы написаны на native код. То есть на Cи. Посмотреть их не выйдет, они выполняются под капотом и нам недоступны.
при создании нового объекта класса
Вы имеете в виду при создании экземпляра класса? Через new? Да, он будет с методами, определёнными в классе и в прототипе объекта.
Для правильного вопроса надо знать половину ответа
Строковый примитив преобразуется в объект только при выполнении методов объекта, причём при преобразовании используется копия значения примитива, сама переменная не меняется.
x = 'foo'
x // "foo"
x.length // 3
x === 'foo' // true
x = new String('foo')
x // String { "foo" }
x.length // 3
x === 'foo' // false
При этом методы, как правило, возвращают не объекты, а примитивы.
x = new String('foo')
x === 'foo' // false
x.substring(0, 3) // 'foo'
x.substring(0, 3) === 'foo' // true