Преимущества использования прототипа по сравнению с определением методов прямо в конструкторе? [Дубликат]

На этот вопрос уже есть ответ:

Использование «прототипа» против «этого» в JavaScript? 14 ответов

Мне интересно, есть ли какие-либо преимущества в использовании одного из них по сравнению с другим, и каким путем я должен идти?

Конструкторский подход:

var Class = function () {

    this.calc = function (a, b) {
        return a + b;
    };

};

Прототипный подход:

var Class = function () {};

Class.prototype.calc = function (a, b) {
    return a + b;
};

Мне не нравится, используя прототип, определения методов отделены от класса, и я не знаю, есть ли какая-то конкретная причина, по которой я должен использовать это только для первого подхода.

Кроме того, есть ли какое-либо преимущество использования литерала функции для определения «класса» по сравнению с определением функции:

var Class = function () {};

Против

function Class () {};

Благодарность

Ответы на вопрос(4)

Ваш ответ на вопрос