Skip to content
/ class Public

javascript inherited, extendable, associable, hookable and more; class system

License

Notifications You must be signed in to change notification settings

findhit/class

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

javascript inherited, extendable, associable, hookable and more; class system

Resources

License

Stars

Watchers

Forks

Packages

No packages published