Hello, everyone 👋. I am a newcomer when it comes to JavaScript. I come from an OOP background (C# and Java). I’ve recently learned that ES6 has a class keyword that preforms similarly (but not exactly) to common OOP languages. Normally I would be inclined to use this feature in my projects; however, it came to my attention that the usage of class in JavaScript seems to be heavily discussed (mostly in a negative light). My questions to this community are:

  • Should it be used often, sparingly, or be outright avoided?
  • What are its advantages and disadvantages?
  • Are there specific cases where the usage of class excels?

Please share your thoughts.

  • @MajorHavoc
    link
    11 year ago

    You’ve asked about my favorite soap box! Thank you.

    If possible, read this in the voice of that fast ad-copy guy who does medical disclaimers:

    Classes suck in Java. Classes suck in C#. Classes suck in JavaScript.

    Getting down in the weeds a bit, but bear with me:

    Class objects are usually a crutch for keeping needless complexity isolated, but babied like a pet, rather than getting rid of it. A particular sign that this is happening is if there’s inheritance in play, or a factory method.

    Inheritance is bad and it should feel bad.

    Most factory patterns owe more to a developer’s massive ego, than to any emergent elegance in the problem space.

    Everything good that comes from classes comes from interfaces. Interfaces are great, and they can do everything that classes can, but in a procedural way.

    This message was brought to you by that weird cult some of us join after we try Haskell for the first time. It’s a great cult. We have cookies every other Friday.