Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Construtor


Rafael Laurindo

Pergunta

Pessoal, gostaria de saber, se existe um método construtor em js, por exemplo, se não quiséssemos que uma classe fosse instanciada, apenas extendida. no PHP fazemos private function __construct(){ throw new Exception ('msgerror')}. E no js como seria?

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Não sei se existe outra forma mais fácil, mas você pode tentar fazer algo assim:

var base = function () {
    if (this.constructor == base.prototype.constructor) {
        throw "A classe não pode ser instanciada!"
    }
    this.a = function () {
        alert("Bom dia")
    }
    this.b = function () {
        alert("Boa tarde")
    }
}
var derivada = function () {
    base.call(this)
    this.c = function () {
        alert("Boa noite")
    }
}
var c = new base() //erro
var d = new derivada() //funciona

Criei esse código agora.

Basicamente, o objeto, ao ser instanciado, verifica se o construtor da classe base é construtor da classe que o está instanciando (se o construtor for igual, a classe também será). Isso funciona porque, ao usar o método call, o this do objeto não se refere mais à classe base, e sim à derivada, já que a classe agora está sendo chamada em outro escopo.

Link para o comentário
Compartilhar em outros sites

  • 0

A maior parte do que sei sobre o call foi por conta desse post do Eduardo e algumas pesquisas.

Quanto ao Exception, não existe esse objeto, mas você pode passar qualquer variável para o throw e recuperá-la depois. Exemplo:

try{
throw "teste"
}catch(ex){
alert("Erro lançado pelo throw: "+teste)
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...