findhit-class

javascript class framework

Usage no npm install needed!

<script type="module">
  import findhitClass from 'https://cdn.skypack.dev/findhit-class';
</script>

README

Class test-badge

javascript class framework

Used for fast deploying of classes by inheriting existent ones.

Instalation


    npm install findhit-class --save

Usage

var Class = require('findhit-class');

Features

Extendable

    // Class creation by extending Class

    var MyClass = Class.extend({

        initialize: function ( arg1, arg 2 ) {
            return this || false;
        },

        destroy: function () {
            return;
        },

        test: function () {
            return 'test';
        },

    });


    // Extending MyClass to a new Class
    // Inheriting initialize and destroy function

    var MyNewClass = MyClass.extend({

        test: function () {
            return 'cool';
        },

    });

Hookable

    // Since we want to inherite initialize, we may also add an hook for this class
    MyClass.addInitHook(function () {

        // do something here..

    });

    // And also for destroying
    MyClass.addDestroyHook(function () {

        // do something here..

    });

    // WARNING:
    // Hooks also run on parent classes when an instance is constructed!

Associable

    // Initialize some vars
    var Gun = Class.extend(),
        Bullet = Class.extend();

    // Associating them
    Gun.hasMany( 'Bullets', Bullet );
    Bullet.belongsTo( 'Gun', Gun );

    // Creating instances
    var gun = new Gun( 'colt' ),
        bulletOne = new Bullet( 'alpha' ),
        bulletStupid = new Bullet( 'whoote' ),
        bulletKaeda = new Bullet( 'i kill you' );

    // We could associate on multiple ways:

        // From a bullet pov

            bulletOne.Gun = gun;
            // gun.Bullets should be now equal to [ bulletOne ];


        // From a gun pov

            gun.Bullets = [ bulletOne, bulletStupid, bulletKaeda ];
            gun.setBullets( [ bulletOne, bulletStupid, bulletKaeda ] );

            // bulletOne.Gun, bulletStupid.Gun and bulletKaeda.Gun should be now equal to Gun

Optionable

    // Initialize some vars
    var Gun = Class.extend({
            options: {
                silent: false,
            },
        });

    var Colt = Gun.extend({
            options: {
                silent: true,
                color: undefined,
                model: undefined,
            },
        });

    var gun = new Gun(),
        colt = new Colt();

    gun.options; // { silent: false }
    colt.options; // { silent: true, color: undefined, model: undefined }

Thanks

Huge thanks to Leaflet, John Resig and Dean Edwards.