2020-06-08
1107
#vanilla javascript
Gbolahan Olagunju
19958
Jun 8, 2020 â‹… 3 min read

How to decide between classes v. closures in JavaScript

Gbolahan Olagunju Let's have a chat about your project. Find me on Twitter @iamgbols.

Recent posts:

Gemini CLI tutorial — Will it replace Windsurf and Cursor?

Gemini CLI tutorial — Will it replace Windsurf and Cursor?

Discover how to use Gemini CLI, Google’s new open-source AI agent that brings Gemini directly to your terminal.

Chizaram Ken
Jul 10, 2025 â‹… 8 min read
React & TypeScript: 10 Patterns For Writing Better Code

React & TypeScript: 10 patterns for writing better code

This article explores several proven patterns for writing safer, cleaner, and more readable code in React and TypeScript.

Peter Aideloje
Jul 10, 2025 â‹… 11 min read
A Guide To Wrapper Vs. Container Classes In CSS

A guide to wrapper vs. container classes in CSS

A breakdown of the wrapper and container CSS classes, how they’re used in real-world code, and when it makes sense to use one over the other.

Temitope Oyedele
Jul 7, 2025 â‹… 10 min read
Stagehand and Gemini logos on a gradient background symbolizing AI web automation

How to build a web-based AI agent with Stagehand and Gemini

This guide walks you through creating a web UI for an AI agent that browses, clicks, and extracts info from websites powered by Stagehand and Gemini.

Elijah Asaolu
Jul 4, 2025 â‹… 8 min read
View all posts

3 Replies to "How to decide between classes v. closures in JavaScript"

  1. Why aren’t you building your Closure like your class and getting the best of both worlds?

    let UserClosure = function(firstName, lastName, age, occupation) {
    this.firstName = params.firstName;
    this.lastName = params.lastName;
    this.age = age;
    this.occupation = occupation;

    let privateValue = “Can’t see this!”;
    function privateFunction(args) { // private method }
    }
    UserClosure.prototype.getAge = function() { return this.age; }
    UserClosure.prototype.describeSelf = function() { …. };

    let someOne = new UserClose(“first”, “last”, 55, “dev”);

    This isn’t intended as argumentative. I’m looking for why I should start using classes instead of the above construction in some upcoming work.

  2. Here’s how to get the best of both worlds.

    const Foo = (function() {
    //create a prototype.
    const prot = {
    bar(bas) {
    bas = bas || this.fallbackBas;
    console.log(“bar says ” + bas);
    }
    } //end of prot.

    //constructor.
    return function(fallback) {
    const o = Object.create(prot);
    //new object, prot as prototype.
    o.fallbackBas = fallback;
    return o;
    } //constructor
    })(); //iif

    const f = new Foo(“This is a fallback.”);
    f.bar(“This is not a fallback.”);
    f.bar();

    /*Output:

    bar says This is not a fallback.
    bar says This is a fallback.
    */

    All the funcs are created only once, and other vars can go in the same outer func.

Leave a Reply