troop
Version:
Full-featured, testable OOP
58 lines (44 loc) • 1.66 kB
Markdown
Troop
=====
*Full-featured, testable OOP*
[Wiki](https://github.com/production-minds/troop/wiki)
[Reference](http://production-minds.github.io/troop/)
Troop features
--------------
- multiple inheritance with traits
- makes use of ES5 property attributes
- pseudo-privates are non-enumerable
- constants are actually read-only
- testing mode for applying mock methods
- postponed, on-demand property definitions
- delegation of instantiation with surrogates
- support for instance memoization
Troop is distinguished from other OOP-related libs such as MooTools or Backbone by
- not littering *your* classes and instances with its own meta-properties
- non-declarative API leads to better IDE integration
- offering simpler unit testing with built-in mocks to speed up TDD process
Example
-------
var MyClass = troop.Base.extend()
.addPrivate({
_secret: "ufo" // static private property
})
.addPublic({
hello: "world" // static public property
})
.addConstants({
pi: 3.14 // static public constant
})
.addMethods({
init: function (who) {
this.addPublic({
hello: who
});
}
});
var myInstance = MyClass.create("all");

Check out these jsFiddles for more examples:
- [Using Troop](http://jsfiddle.net/danstocker/n5jze/)
- [Postponed property definitions](http://jsfiddle.net/danstocker/YR374/)
- [Surrogate classes in Troop](http://jsfiddle.net/danstocker/ZsZGy/)