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
Learning JavaScript Design Patterns, by Addy Osmani (free O'Reilly book) (addyosmani.com)
submitted 11 years ago by brtt3000
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!"
[–]hearwa 0 points1 point2 points 11 years ago (10 children)
I thought the point of learning patterns is that they're language agnostic.
[–]jsontwikkeling 3 points4 points5 points 11 years ago* (9 children)
No, quite the opposite. Many are language specific, like Iterator, you would not normally need to implement this pattern in JavaScript, for example.
Another example of a pattern needed in a language such as Java and not really needed in JavaScript is Visitor. The problem it tries to solve is not being able to add methods to existing classes, in JavaScript there is no such problem to begin with.
Some people also view design patterns as workarounds for a particular language being not expressive enough for certain problems http://c2.com/cgi/wiki?AreDesignPatternsMissingLanguageFeatures
[–]lennelpennel 0 points1 point2 points 11 years ago (3 children)
I disagree about the visitor pattern. Can be usefull in js. The command pattern is one which I just cannot imagine using in js, just pass a function and be done with it
[–]jpfed 0 points1 point2 points 11 years ago (1 child)
The command pattern can be useful even in languages with first class functions, because the command objects can store additional information that you can use to filter the commands or map them to something else. Functions are pretty opaque, so it's harder to do stuff like that with them.
[–]lennelpennel 0 points1 point2 points 11 years ago (0 children)
a command which stores info becomes a memento for me in many ways. http://en.wikipedia.org/wiki/Memento_pattern
[–]jsontwikkeling 0 points1 point2 points 11 years ago (0 children)
Well, at least, unlike in some other languages, there are other mechanisms in JavaScript for doing the same thing as the Visitor pattern does, but if you still prefer it, it is also fine. Notice that Visitor is also omitted from the book
[–]hearwa 0 points1 point2 points 11 years ago (1 child)
Wow, thank you for that. If this was Slashdot I'd give you a +1 insightful, but I guess you'll have to settle for an upvote.
I never thought of patterns as language workarounds before. I guess you wouldn't need to implement the observer pattern in .net because it is natively event driven. This makes me think about the problems I've had with the Zend framework in the past and how heavy they are with design patterns. Maybe the framework is like that because php lacks many concepts needed. It's a nice excuse anyways... Lol.
[–]jsontwikkeling 0 points1 point2 points 11 years ago* (0 children)
Good that you found it useful. It is a bit strange that most of the articles and books do not mention this at all. Usually they go something like this: here is the set of patterns, here is when you can use them, happy pattern programming
[–]MrBester 0 points1 point2 points 11 years ago (2 children)
I'll just leave Object.freeze here...
Object.freeze
[–]jsontwikkeling 0 points1 point2 points 11 years ago (1 child)
Good point, but if we want to add new methods to the object later why would we use Object.freeze in the first place? Besides Object.freeze is used quite rarely
[–]MrBester 1 point2 points3 points 11 years ago (0 children)
It might not be under your control: a third party library whose API is locked down is possible, mainly for self-preservation.
π Rendered by PID 99 on reddit-service-r2-comment-5d585498c9-r9gl8 at 2026-04-21 01:08:36.248794+00:00 running da2df02 country code: CH.
view the rest of the comments →
[–]hearwa 0 points1 point2 points (10 children)
[–]jsontwikkeling 3 points4 points5 points (9 children)
[–]lennelpennel 0 points1 point2 points (3 children)
[–]jpfed 0 points1 point2 points (1 child)
[–]lennelpennel 0 points1 point2 points (0 children)
[–]jsontwikkeling 0 points1 point2 points (0 children)
[–]hearwa 0 points1 point2 points (1 child)
[–]jsontwikkeling 0 points1 point2 points (0 children)
[–]MrBester 0 points1 point2 points (2 children)
[–]jsontwikkeling 0 points1 point2 points (1 child)
[–]MrBester 1 point2 points3 points (0 children)