Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

120
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda