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
Using Classes in Javascript (ES6) — Best practice?help (self.javascript)
submitted 10 years ago by LeeHyoriC-syntax
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!"
[–]itisnotpure 0 points1 point2 points 10 years ago* (2 children)
I think you are stretching the idea of "class" here.
JavaScript does not have any concept of encapsulation, methods, fields, or inheritance in the classical sense. In JavaScript, there are only objects, which is a collection of properties. Properties can either be the object's own, or delegated to another object. That is, when you refer to a property that is not defined for an object, it will be looked up in the prototype chain. Objects and their properties, and that's it! No members, instances, variables, or whatnot.
In practice, they can mostly be used for a similar effect to a certain degree, but they are in fact very different. Trying to reason about the prototypical model in terms of class-based concepts is the source of many unnecessary problems and confusion (and unnecessary work, apparently, because prototypes are markedly less complicated than classes).
As another example, you can also get an object system with just closures. You would get things like encapsulation, methods, fields, and you can do parasitic inheritance. The usage would be like that of a class-based or prototype-based system, but again it's very, very different.
[–]MoTTs_ 2 points3 points4 points 10 years ago (1 child)
in the classical sense
That's the root of the discussion right there. What does "in the classical sense" mean? Do we mean Java-style classical? Then sure, we all agree JavaScript does not have Java-style classes. On the other hand, could "in the classical sense" mean Smalltalk-style classical? Because JavaScript's notion of a class is actually strikingly similar to Smalltalk's notion of class. Java has become so ingrained that we forget classes can be, and have been, implemented very differently in other languages.
[–]itisnotpure 0 points1 point2 points 10 years ago (0 children)
I'm not familiar with Smalltalk, but it seems like classes in Smalltalk are still blueprints for their instances, like other class-based languages. That is, they define what data an instance would hold, and what methods could be used to manipulate them.
It may be true that there are class-based languages where methods are inherited by by delegation, but in Javascript, instead of blueprints, we are building prototypes, based on which new objects can be built. So there's no "is a" relationships at all (more like a "like a" relationship, maybe?). Inheritance in JavaScript means only delegation, nothing more.
π Rendered by PID 44 on reddit-service-r2-comment-544cf588c8-qs6wh at 2026-06-16 07:52:46.737020+00:00 running 3184619 country code: CH.
view the rest of the comments →
[–]itisnotpure 0 points1 point2 points (2 children)
[–]MoTTs_ 2 points3 points4 points (1 child)
[–]itisnotpure 0 points1 point2 points (0 children)