Javascript tiene 7 valores primitivos como cadena, número, bigint, booleano, indefinido, símbolo, nulo. Lo que no entiendo no son realmente objetos cuando los declaramos. Y su tipo no es un objeto. Y todavía podemos llamar a métodos en cadenas. ¿Cómo es eso posible?
Cuando creamos cadenas (str1 = "aysel" y verificamos que typeof es una cadena, entonces, si verifica typeof string, funciona. Pero si creo str2 = new String ("aysel") Typeof str2 es obj. Pero podemos llamar a str1. length también en cadenas primitivas, aunque nunca lo hemos definido como un objeto en primer lugar.