Qual a diferença entre o método construtor e a utilização do setters em Orientação a Objetos em JavaScript

A pergunta pode parecer meio tosca, mas fiquei com dúvidas e gostaria de compreender mais a fundo.

O construtor ele alimenta os objetos criados da classe, correto?

As dúvidas são:

1- Então qual seria a utilidade dele se tem os setters que alimenta também o objeto?

2- Posso trabalhar com uma classe em JS apenas com o construtor sem os getters/setters ou trabalhar sem o construtor ficando com os getters/setters?

3- De algum modo da dúvida 2 isso irá atrapalhar em algo quando for realizar herança?

Orientação para me aprofundar em programação em C

Bom dia gostaria de uma ajuda para me aprofundar em programação, comecei aprendendo sozinho a linguagem C ja sei o basico, como declarar variaveis, constantes, criar funções e estruturas de repetição como for, while, swithc além de if e else. Gostaria de saber algum tipo de material para ler e aprender mais para criar programas mais complexos.