Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

Cls

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

Cls

Simple class abstraction in JavaScript

  • 0.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

Cls

An interface for classical object oriented programming in JavaScript.

API

Creating a class with Cls

var Slideshow, sshow;

Slideshow = Cls({
  methods: {
    constructor: function(slides, effect) {
      this.slides = slides;
      this.effect = effect;
    },
    goTo: function(slide) {
      domSelector('#id').nextSlide(slide, this.effect);
    }
  },
  statics: {
    version: '0.0.1'
  }
});

sshow = new Slideshow(['top_story', 'sport', 'politics'], 'fade');

Extending that class

var MegaSlideshow, mshow;

MegaSlideshow = Cls({
  uber: Slideshow,
  methods: {
    goTo: function(slide) {
      var that = this;

      this.changePageTitle(slide, function() {
        that.inherited('next');
      });
    }
  }
});

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.mixin(laptop, { memory: '8GB', cores: 5 });

Environments

You can use Cls in the browser or in a Node.js app.

In the browser

<script src="path/to/cls.js"></script>
<!-- Cls() is exposed as a global var -->

<script type="text/javascript">
  var Foo = Cls({ ... });
  ...
</script>

Node.js

var Cls = require('Cls');

var Foo = Cls({ ... });

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 = console.log
Cls = require './cls'

Animal = Cls
  methods:
    constructor: (@name) ->

    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)

Keywords

FAQs

Package last updated on 19 May 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc