Neolithic Psychedelic Mushrooms
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    fiberpublic

    Fiber.js: Lightweight, fast, JavaScript inheritance model

    Build Status

    Why another JavaScript inheritance library?

    Take a look at the performance tests to see how it compares against commonly used inheritance libraries.

    Inheritance

    Usage

    [[constructor]].extend( function )

    Example

    // Animal base class
    var Animal = Fiber.extend(function() {
        return {
            // The `init` method serves as the constructor.
            init: function() {
                // Private
                function private1(){}
                function private2(){}
     
                // Privileged
                this.privileged1 = function(){}
                this.privileged2 = function(){}
            },
            // Public
            method1: function(){}
        }
    });

    The init method acts as the constructor, which is invoked when an instance is created:

    var animal = new Animal(); // Create a new Animal instance

    init is invoked automatically.

    Inheritance

    // Extend the Animal class.
    var Dog = 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:

    var husky = new Dog();
    husky.scare(); // "Dog::I scare you'"

    Accessing parent prototype

    Every class definition has access to the parent's prototype via the first argument passed into the function:

    // Extend the Animal class.
    var Dog = Animal.extend(function( base ) {
        return {
            // Override base class `method1`
            method1: function(){
                // Call the parent method
                base.method1.call(this);
            },
            scare: function(){
                console.log('Dog::I scare you');
            }
        }
    });

    Mixin

    Mixins are a way to add functionality to a Fiber definition. Basically, they address the problem of "multiple inheritance". Read more.

    Usage

    Fiber.mixin( object, function1, function2, ... )

    var Foo = Fiber.extend(function(base) {
        return {
            method1: function(){}
        }
    });
     
    var f = new Foo();
    f.method1();
     
    var mix1 = function(base) {
        return  {
            method2: function() {}
        }
    }
     
    Fiber.mixin(Foo, mix1);
     
    f.method2();

    Decorators

    With decorators you can dynamically attach additional properties to an instance. Read more.

    Usage

    Fiber.decorate( instance, decorator_1, ... , decorator_n )

    function CarWithPowerWindows(base) {
        return {
            roll: function() {}
        }
    }
     
    Fiber.decorate(myCar, CarWithPowerWindows);

    Proxy

    Usage

    Fiber.proxy( base, instance )

    // Extend the Animal class;
    var Dog = Animal.extend(function(base) {
        return {
            init: function() {
                this.base = Fiber.proxy(base, this);
                this.base.init();
            }
        }
    });

    noConflict

    Usage

    Fiber.noConflict()

    Returns a reference to the Fiber object, and sets the Fiber variable to its previous owner.

    Keywords

    none

    install

    npm i fiber

    Downloadsweekly downloads

    179

    version

    1.0.4

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar