cross-posted from: https://programming.dev/post/302850

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.

  • @[email protected]
    link
    fedilink
    English
    71 year ago

    It’s not the best, but people demonize it too much in my opinion. I would say to just use them and see if they work for your use case.

    I hear a lot of “just use functions / objects” but for some things (IE, game dev) classes are objectively better in my opinion (it makes more logical sense to do “objects.push(new Car())” than to do it with functions or objects in my opinion, possibly a hot take)

  • @[email protected]
    link
    fedilink
    English
    51 year ago

    It’s much better than the alternative, which is the .prototype. system thing that I still don’t fully get.

  • bugsmith
    link
    fedilink
    English
    4
    edit-2
    1 year ago

    I mean, it’s syntactic sugar but for the most part it will perform in line with how the average Joe expects classes to work.

    I use them sometimes. I avoid them other times.

    If you’re new to JavaScript, go ahead and use them and if you find s usecase where they don’t work to your expectatiob you can start learning about why there aren’t “true oop classes”.

  • ZephyrXero
    link
    English
    31 year ago

    I think it’s primarily because OOP has fallen out of favor for more functional JS. But when they first introduced classes I was elated because they were way better than the Prototype based inheritance we used to have to deal with. I just don’t want to write OO anymore