Definindo métodos de protótipo dentro do construtor

oje, vi um padrão JavaScript que nunca vi em toda a minha vida. Não sei dizer o propósito de usar esse padrão. Parece errado para mim, mas quero ser um pouco conservador. Pode ser um padrão incrível que eu nunca vi ante

function Dog() {
    Dog.prototype.bark = function () {
        alert('woof!');
    }

    this.bark = function () {
        Dog.prototype.bark();
    }

    this.bark();
}

Primeiro, não sou fã de criar métodos (como membros privilegiados) dentro do construtor sem motivo. Isso causaria a criação de funções sempre que uma instância é criada. Segundo, nesse trecho de código, ele também chama o nome do protótipo "Dog", em vez de "this". Isso me deixa super confusa.

Alguém sabe o que há de bom nisso

Obrigado! Graç

questionAnswers(2)

yourAnswerToTheQuestion