inherit

    2.2.7 • Public • Published

    Inherit NPM version

    This module provides some syntax sugar for "class" declarations, constructors, mixins, "super" calls and static members.

    Getting Started

    In Node.js

    You can install using Node Package Manager (npm):

    npm install inherit
    

    In Browsers

    <script type="text/javascript" src="inherit.js"></script>

    It also supports RequireJS module format and YM module format.

    Module has been tested in IE6+, Mozilla Firefox 3+, Chrome 5+, Safari 5+, Opera 10+.

    Specification

    Creating a base class

    Function inherit(Object props);

    Creating a base class with static properties

    Function inherit(
        Object props,
        Object staticProps);

    Creating a derived class

    Function inherit(
        Function BaseClass,
        Object props,
        Object staticProps);

    Creating a derived class with mixins

    Function inherit(
        [
            Function BaseClass,
            Function Mixin,
            Function AnotherMixin,
            ...
        ],
        Object props,
        Object staticProps);

    Example

    var inherit = require('inherit');
     
    // base "class"
    var A = inherit(/** @lends A.prototype */{
        __constructor : function(property) { // constructor
            this.property = property;
        },
     
        getProperty : function() {
            return this.property + ' of instanceA';
        },
        
        getType : function() {
            return 'A';
        },
     
        getStaticProperty : function() {
            return this.__self.staticProperty; // access to static
        }
    }, /** @lends A */ {    
        staticProperty : 'staticA',
        
        staticMethod : function() {
            return this.staticProperty;
        }
    });
     
    // inherited "class" from A
    var B = inherit(A, /** @lends B.prototype */{
        getProperty : function() { // overriding
            return this.property + ' of instanceB';
        },
        
        getType : function() { // overriding + "super" call
            return this.__base() + 'B';
        }
    }, /** @lends B */ {
        staticMethod : function() { // static overriding + "super" call
            return this.__base() + ' of staticB';
        }
    });
     
    // mixin M
    var M = inherit({
        getMixedProperty : function() {
            return 'mixed property';
        }
    });
     
    // inherited "class" from A with mixin M
    var C = inherit([A, M], {
        getMixedProperty : function() {
            return this.__base() + ' from C';
        }
    });
     
    var instanceOfB = new B('property');
     
    instanceOfB.getProperty(); // returns 'property of instanceB'
    instanceOfB.getType(); // returns 'AB'
    B.staticMethod(); // returns 'staticA of staticB'
     
    var instanceOfC = new C();
    instanceOfC.getMixedProperty() // returns "mixed property from C"

    Install

    npm i inherit

    DownloadsWeekly Downloads

    58,529

    Version

    2.2.7

    License

    MIT

    Unpacked Size

    17 kB

    Total Files

    6

    Last publish

    Collaborators

    • dfilatov