Take a look at the performance tests to see how it compares against commonly used inheritance libraries.
[[constructor]].extend( function )
// Animal base classvarAnimal=Fiber.extend(function(){return{// The `init` method serves as the constructor.init: function(){// Privatefunctionprivate1(){}functionprivate2(){}// Privilegedthis.privileged1=function(){}this.privileged2=function(){}},// Publicmethod1: function(){}}});The init method acts as the constructor, which is invoked when an instance is created:
varanimal=newAnimal();// Create a new Animal instanceinit is invoked automatically.
// Extend the Animal class.varDog=Animal.extend(function(){return{// Override base class `method1`method1: function(){console.log('dog::method1');},scare: function(){console.log('Dog::I scare you');}}});Create an instance of Dog:
varhusky=newDog();husky.scare();// "Dog::I scare you'"Every class definition has access to the parent's prototype via the first argument passed into the function:
// Extend the Animal class.varDog=Animal.extend(function(base){return{// Override base class `method1`method1: function(){// Call the parent methodbase.method1.call(this);},scare: function(){console.log('Dog::I scare you');}}});Mixins are a way to add functionality to a Fiber definition. Basically, they address the problem of "multiple inheritance". Read more.
Fiber.mixin( object, function1, function2, ... )
varFoo=Fiber.extend(function(base){return{method1: function(){}}});varf=newFoo();f.method1();varmix1=function(base){return{method2: function(){}}}Fiber.mixin(Foo,mix1);f.method2();With decorators you can dynamically attach additional properties to an instance. Read more.
Fiber.decorate( instance, decorator_1, ... , decorator_n )
functionCarWithPowerWindows(base){return{roll: function(){}}}Fiber.decorate(myCar,CarWithPowerWindows);Fiber.proxy( base, instance )
// Extend the Animal class;varDog=Animal.extend(function(base){return{init: function(){this.base=Fiber.proxy(base,this);this.base.init();}}});Fiber.noConflict()
Returns a reference to the Fiber object, and sets the Fiber variable to its previous owner.
