Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
¿Puedo clonar perfectamente cualquier objeto ordinario?

Quiero escribir una función cloneDeep que clone cualquier objeto JS. Hay dos problemas distintos aquí:

  1. Auto referencias.
  2. Objetos exóticos.

Quiero centrarme en esto último. Los objetos exóticos en ECMAScript se enumeran en esta sección: 10.4 Ranuras y métodos internos integrados de objetos exóticos . Allí, menciona objetos exóticos como cadenas, funciones enlazadas, matrices, etc. Específicamente, no menciona RegExp .

Entonces, mi expectativa era que dado que RegExp es un objeto ordinario, si copio todas sus propiedades (enumerables y no enumerables) y su prototipo, se comportará como el objeto RegExp de origen. Pero eso no es cierto: falla cuando intento acceder al getter regex.source diciendo explícitamente que no es un objeto RegExp .

Profundizando más, descubrí que existen algunas ranuras internas inaccesibles para el usuario en ECMAScript para que solo se pueda acceder a varios objetos a través de sus constructores.

Esto me lleva a creer que cualquiera de los dos es cierto:

  1. RegExp también es un objeto exótico de alguna manera.
  2. Es un objeto ordinario pero hay algún otro estado que no copié.

¿Cuál de estos es cierto? Porque no puedo envolver mi cabeza alrededor de un objeto ordinario con ranuras internas específicas de objetos.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Es un objeto ordinario con algún estado interno que no podrías copiar.

Ser un objeto exótico solo significa que tiene una implementación extraordinaria de los métodos internos, no que no tenga ranuras internas. Muchas funciones integradas, como el .source getter que describe, aún requieren que se las llame en un objeto con ranuras internas específicas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda