Cls
An interface for classical object oriented programming in JavaScript.
API
Creating a class with Cls
var Slideshow sshow;Slideshow =;sshow = 'top_story' 'sport' 'politics' 'fade';
Extending that class
var MegaSlideshow mshow;MegaSlideshow =;
Mixins
You can override / add methods to a class/object (any object) using Cls.mixin(obj, { /* methods */ }):
var laptop =os: 'OSX Lion'processor: 'i5';laptop = Cls;
Environments
You can use Cls in the browser or in a Node.js app.
In the browser
<!-- Cls() is exposed as a global var -->
Node.js
var Cls = ;var Foo = ;
Install the Package!
Install the package with npm manually or by including the app into your package.json dependencies.
$ npm install Cls
// then, in your Node app
var Cls = require('Cls')
Developers
$ npm install .
$ npm test
$ npm run-script build
Only edit the file src/cls.js
.
For more examples check test/tests.js
.
Why did I write this library?
- prototype is a long word
- People are used to classes from other languages
- Although CoffeeScript's Class implementation is nice, if you have 10 files that use OOP the __extends function is defined 10 times
- I don't like the functionality provided by most of the similar OOP libraries or I consider them bloated
Bonus - for CoffeeScript fans
log = consolelogCls = require './cls' Animal = Cls methods: -> move: (meters) -> log "#{@name} moved #meters meters" statics: types: ['vertebrates', 'invertebrates'] Snake = Cls uber: Animal methods: move: -> log "Slithering..." setTimeout => this.inherited 'move', [5] , 300 Horse = Cls uber: Animal methods: move: -> log "Galloping..." args = arguments setTimeout => this.inherited 'move', args , 1500 sam = new Snake "Sammy the Python"tom = new Horse "Tommy the Palomino" sam.move()tom.move(45)