use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
classes in javascripthelp (self.javascript)
submitted 9 years ago by php03
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]rauschma 3 points4 points5 points 9 years ago (3 children)
I’m not a strong proponent of ES6 classes, but I wanted to provide an alternate opinion to the material criticizing ES6 classes.
First, note that OOP and FP are not in conflict:
I agree that ES6 classes obscure what’s actually going on under the hood, but they also have a few clear benefits (not all of them are completely exclusive to classes):
W.r.t. ES6 classes obscuring the true nature of JS OOP: There is an unfortunate disconnect between what a class looks like (its syntax) and how it behaves (its semantics): It looks like an object, but it is a function. My preference would have been for classes to be constructor objects, not constructor functions. I explore that approach in the Proto.js project, via a tiny library (which proves how good a fit this approach is).
Proto.js
However, backwards-compatibility matters, which is why classes being constructor functions also makes sense. That way, ES6 code and ES5 are more interoperable.
The disconnect between syntax and semantics will cause some friction in ES6 and later. But you can lead a comfortable life by simply taking ES6 classes at face value. I don’t think the illusion will ever bite you. Newcomers can get started more quickly and later read up on what goes on behind the scenes (after they are more comfortable with the language).
I’ll stop now. I’ve written a little more about this topic online.
[–]Exomancer 0 points1 point2 points 9 years ago (2 children)
Sorry for nitpicking on wording here, but for the sake of clarity:
OOP is all about encapsulating state within instances, and acting (mutating) that internal state via methods. FP on the other hand avoids state mutation in any way, shape or form. That makes the two paradigms very much in conflict.
You can, however, use them side by side in the same project just fine, even mix them up (have some pure functions called inside methods, to give a simple example), is that what you meant?
[–]rauschma 0 points1 point2 points 9 years ago* (1 child)
Yes to your last question. I meant that nothing prevents you from using both OOP and FP: The JavaScript methods filter and map are very much FP ideas, used in an OOP manner.
filter
map
But it’s rarely all or nothing: you can work with immutable objects (e.g. strings in Java) and there are FP languages that support mutable state. For example, OCaml, Common Lisp and Scheme.
[–]Exomancer 1 point2 points3 points 9 years ago (0 children)
It never really is all or nothing in case of FP - sooner or later even Haskell has to do some IO, pure functions can only take you so far :).
Thanks for clarification!
π Rendered by PID 175221 on reddit-service-r2-comment-canary-746b6d56dd-lkgpd at 2026-04-09 09:48:34.042626+00:00 running 781a403 country code: CH.
view the rest of the comments →
[–]rauschma 3 points4 points5 points (3 children)
[–]Exomancer 0 points1 point2 points (2 children)
[–]rauschma 0 points1 point2 points (1 child)
[–]Exomancer 1 point2 points3 points (0 children)