JSFiddle - React, Tailwind, and code Playground

by adelura

JavaScript

var Kon;

(function () {
    var instance;

    // konsturktor
    Kon = function (name) {
        // jeżeli instancja została utworzona, to zwracamy obiekt
        if (instance) {
            return instance;
        }

        fam.Trigger.call(this); // konstruktor rodzica
        this.foo = name;
    };

    fam.utils.inherits(Kon, fam.Trigger);

    // metoda 
    Kon.prototype.say = function () {
        console.log(this.foo + ' metoda');
        this.trigger('mowie', {
            foo: this.foo
        });
    };

    Kon.statycznaMetoda = function () {
        console.log('statyczna metoda');
    };

    Kon.getInstance = function (name) {
        if (!instance) {
            instance = new Kon(name);
        }

        return instance;
    };
}());

var kon1 = Kon.getInstance('rad');
var kon2 = Kon.getInstance('iczyna');
new Kon() === new Kon(); // true
kon1 === new Kon(); // true

console.log(kon1 === kon2); // true
console.log(kon1 instanceof fam.Trigger); // true
console.log(kon2 instanceof Kon); // true
console.log(kon2.foo); // rad

kon2.bind('mowie', function (e) {
    console.log(e);
});

kon1.say();