Skip to content
This repository has been archived by the owner on May 28, 2020. It is now read-only.
/ Clazzy Public archive

[DEPRECATED] A cross platform JavaScript library that provides a classical interface to prototypal inheritance.

License

Notifications You must be signed in to change notification settings

lsphillips/Clazzy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DEPRECATED

This project is now deprecated in favour of the ECMAScript 6 class syntax; this project will no longer be maintained.


Clazzy

Available from NPM Built using Travis

A cross platform JavaScript library that provides a classical interface to prototypal inheritance.

Usage

Clazzy has a single method with this signature:

Function Clazzy.create(Object definition)

It returns a constructor function, with a prototype populated using the provided definition, that you can instantiate using the new keyword.

Creating a class

var Foo = Clazzy.create(
{
	initialize : function ()
	{
		this.foo = 'foo';
	},

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

	baz : function (baz)
	{
		return baz;
	},

	static :
	{
		qux : function ()
		{
			return 'qux';
		}
	}
});

Note: Instance properties can be defined in the definition, however their initial value should be set in the constructor.

Creating a class that extends another class

var Bar = Clazzy.create(
{
	extend : Foo,

	initialize : function ()
	{
		this.super();

		this.corge = 'corge';
	},

	baz : function ()
	{
		return 'bar';
	},

	baz : function (baz)
	{
		return 'super ' + this.super(baz);
	}
});

Note:

  • Static methods are not inherited.
  • If a method overrides one of its base class methods, you can invoke the overridden method through the use of the super method.

Creating a class that includes another class

Clazzy provides a method of code reuse called includes. Behaving similarly to Ruby's mixins and PHP's traits, they enable a developer to reuse sets of methods freely in several independent classes defined in different class hierarchies.

var Baz = Clazzy.create(
{
	include : [Foo],

	moo : function ()
	{
		return 'moo';
	}
});

Note:

  • Static methods are not included.
  • The super method, when invoked from an included method, does not reference the hierarchy of the class it's included in.
  • The precedence order is that an inherited member from a base class is overridden by an included member, which in turn are both overridden by a member from the current class.

Getting started

Clazzy is available through the Node Package Manager (NPM), so you can install it like so:

npm install clazzy

Development

This project doesn't have much of a build process. It does have tests though; which you can run with Grunt like so:

grunt test

This also runs code quality checks using JSHint. Please refer to the .jshintrc file to familiar yourself with the rules.

License

This project is released under the MIT License.

About

[DEPRECATED] A cross platform JavaScript library that provides a classical interface to prototypal inheritance.

Resources

License

Stars

Watchers

Forks

Packages

No packages published