• Когда использовать классы, а когда функции?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Согласен с Ларисой, но немного дополню.
    Классы, собственно, введены для любителей ООП, и действительно - только эмулируют в JS классическое ООП.
    Нужны они для того, чтобы инкапсуллировать части кода, иметь возможности классового наследования и проч. Но нужно не забывать, что в JS используется наследование на прототипах и никакого другого в нем нет.
    Если понять вышесказанное, то от классов в JS лучше отказаться, и использовать встроенные инструменты. Сразу скажу единственный минус, который я не смог чисто обойти - отсутствие множественного наследования.

    Итак, инкапсулляцию лучше всего делать, размещая все функции отдельного блока кода не в классе, а в качестве методов объекта.
    var obj1= {
    prop1: value,
    met1: function(arguments) {
    body
    }
    // etc
    }


    При таком подходе мы имеем в глобальном скопе лишь одну переменную, но можем вполне использовать весь ее потенциал, как:
    obj1.met1();
    И зачем нам нужны классы при таком подходе?
    Если нам нужно унаследовать от другого объекта, самым простым способом будет разместить ссылку на родительский объект в свойстве __proto__ наследника.
    var parent= {...};
    var child= {
    __proto__: parent,
    .....
    }
    Ответ написан
    Комментировать