Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

129
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!