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

118
Vistas
Circular trap in Builder method while implementing in Javascript

I was trying to implement a Builder pattern in Javascript using modularity, where I got caught in a circular dependencies-like situation. My file structure looks something like this,

index.js

import PersonBuilder from "./PersonBuilder.js";

let pb = new PersonBuilder();

let person = pb.lives.in('jaipur').at('ajmer Road')
                .age.of(32).build();

Person.js

class Person
{
    constructor()
    {
        this.city = this.street = this.name = "";
        this.age = 0;
    }

    toString(){
        return `${this.name} from ${this.city} lives at ${this.street} is ${this.age} years old`;
    }
}

export default Person;

PersonBuilder.js

import  Person from "./Person.js";
import  PersonAgeBuilder from "./PersonAgeBuilder.js";
import PersonAddressBuilder from "./PersonAddressBuilder.js";

class PersonBuilder 
{
    constructor(person = new Person)
    {
        this.Person = person;
    }

    get lives()
    {
        return new PersonAddressBuilder(this.person);
    }
    get age()
    {
        return new PersonAgeBuilder(this.person);
    }
    build()
    {
        return this.person;
    }
}

export default PersonBuilder;

PersonAddressBuilder.js

import  PersonBuilder from "./PersonBuilder.js";

class PersonAddressBuilder extends  PersonBuilder
{
    constructor(person)
    {
        super(person);
    }
    in(city){
        this.person.city = city;
        return this;
    }
    at(street)
    {
        this.person.street = street;
        return this;
    }
}

export default PersonAddressBuilder;

PersonAgeBuilder.js

import  PersonBuilder from "./PersonBuilder.js";


 class PersonAgeBuilder extends PersonBuilder
{
    constructor(person)
    {
        super(person);
    }
    of(age){
        this.person.age = age;
    }
}

export default PersonAgeBuilder;

When I am calling index.js on my browser I got the following error:

Uncaught ReferenceError: Cannot access 'PersonBuilder' before initialization at PersonAgeBuilder.js:4

how can I solve this?

about 4 years ago · Juan Pablo Isaza
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