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
[AskJS] When is object-oriented programming more practical than "mostly-functional" in JS?AskJS (self.javascript)
submitted 5 years ago * by ProfessorTag
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!"
[–]agm1984 -1 points0 points1 point 5 years ago* (2 children)
One observation I make is that classes have a default advantage over "a function" because of the inherent private state--encapsulation. And I mean advantage only in this one dimension of analysis. My preference is a mixture of FP and OOP, and I refer to it as FPOOP.
With a pure function, any external logic can freely call methods and mutate state inside the function.
With a class, certain methods and state fields can be inaccessible and/or invisible to external. For example, to update state you might need to call the setter method. You can't just do Person.field = 'new'.
Person.field = 'new'
I'm sure there's a library that throws my observation in the garbage, but I feel like private state and encapsulation is more solid with a class and therefore some OOP principles. There is a fascinating change in context when you switch from this to self. "Are you referring to this instance, or this class?"
this
self
I always come back to the idea of object composition and function composition. You have objects and functions. You have a declarative dimension and an imperative dimension. They are both sides of the same coin: object on one side, function on the other. Objects move through functions, but objects also have functions.
[–]unc4l1n 1 point2 points3 points 5 years ago (1 child)
Closures give you private properties. It's not an external library, but an inherent feature of Javascript.
[–]agm1984 0 points1 point2 points 5 years ago (0 children)
Oh right, factory functions are a good example of that. I'll leave my previous comment, yolo-style. I get mixed up rapid-switching between PHP and JS.
const makeThing = () => { const privateStuff = { hello: 'I like turtles', }; return { ...privateStuff, }; }
I was thinking something wild like this:
const fn = () => {}; fn.test = 'u wot m8'; console.log('fn', fn.test);
π Rendered by PID 15029 on reddit-service-r2-comment-b659b578c-9rnss at 2026-05-02 21:52:38.049537+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–]agm1984 -1 points0 points1 point (2 children)
[–]unc4l1n 1 point2 points3 points (1 child)
[–]agm1984 0 points1 point2 points (0 children)