JSFiddle - React, Tailwind, and code Playground

by gradbot

JavaScript

var test = 0;
var guid = 0;

function Singleton(fn) {
    if (!"guid" in fn) {
        fn.guid = guid++;
    }
    
    if (fn.guid in Singleton.fn_map) {
        return Singleton.fn_map[fn.guid];
    } else {
        return Singleton.fn_map[fn.guid] = fn();
    }
}
Singleton.fn_map = {};

var DB_init = function() { return test++; };
console.log(Singleton(DB_init));
console.log(Singleton(DB_init));

function DB() {
    if ("instance" in DB) {
        return DB.instance;
    } else {
        return DB.instance = test++;
    }
}

console.log(DB());
console.log(DB());