node package manager


Core prototypical primitives for Object Orientation/Composition.


Boo provides utilities to structure a program by means of prototypical object orientation and object composition, in an easy way. It provides you with inheritance, composition and mixin facilities, all packaged in a nice API.

var Animal = boo.Base.derive({
  name: 'Unknow'

, say:
  function say(thing) {
    return + ': ' + thing }

var Cat = Animal.derive({
  function _withName(name) {
    return this.derive({ name: name }) }

var nyah = Cat.withName('Nyan Cat')
nyah.say('Nyan nyan nyan~')

With Node.js and NPM, you can do the easy-modo install:

$ npm install boo
# then require it as usual
node> var boo = require('boo')

In the browser, you have to include the script tag pointing to the boo.js file:

<script src="/path/to/boo.js"></script>
<script type="text/javascript">
  // `boo' is in the global scope now

ES3 and beyond!

For Node, just:

$ npm test          # (or make test)

For the browser:

$ npm install -g brofist-browser
$ make browser-test
# Then point your browsers to the URL on yer console.

There are a few benchmarks you can run:

$ make benchmark

Boo ships with a full narrated reference manual, covering the concepts and designs you need to know to use the library effectively. You can either read it online, or locally — from the file docs/build/html/index.html.

Additionally, you can read the following introduction to Boo:

Extends the target with the provided mixins, using a right-most precedence rule.

extend: object, mixin... -> object

Like extend, but pure.

merge: mixin... -> object

Constructs a new object that inherits from proto.

derive: object, mixin... -> object

Instantiates a new object, and initialises it by calling the init method.

make: @object => A... -> this <| object

Like derive, but the prototype is the this object.

derive: @object => mixin... -> this <| object

Boo uses the Github tracker for tracking bugs and new features.