Neurologically Paralyzing Mouseovers

    es6-mixin

    0.3.0 • Public • Published

    es6-mixin

    Minimalist mixin helper designed to be used with ES6 (ES2015) classes.

    Latest Stable Version License Build Status

    Dependency Status NPM Downloads Test Coverage API Documentation Code Climate

    Installation

    npm install --save es6-mixin

    Usage

    mix(SuperClass, Mixin1, Mixin2, ...)

    import { mix } from 'es6-mixin';
     
    class Super {
      foo() {
        return 'foo';
      }
    }
     
    class Mixin1 {
      bar () {
        return 'bar';
      }
    }
     
    class Mixin2 {
      baz () {
        return 'baz';
      }
    }
     
    class Sub extends mix(Super, Mixin1, Mixin2) {
    }
     
    new Sub().foo(); // => 'foo'
    new Sub().bar(); // => 'bar'
    new Sub().baz(); // => 'baz'
    new Sub() instanceof Super; // => true
    new Sub() instanceof Mixin1; // => false
    new Sub() instanceof Mixin2; // => false

    mixin(target, Mixin [, arg1, arg2, ...])

    Basic usage

    import { mixin } from 'es6-mixin';
     
    class Foo {
      foo() {
        return 'foo';
      }
    }
     
    class Bar {
      constructor() {
        mixin(this, Foo);
      }
    }
     
    new Bar().foo(); // => 'foo'

    Pass parameters to a constructor

    import { mixin } from 'es6-mixin';
     
    class Foo {
      constructor(a, b, c) { ... }
     
      foo() {
        return 'foo';
      }
    }
     
    class Bar {
      constructor() {
        mixin(this, Foo, 1, 2, 3); // 1, 2, 3 are passed to Foo's constructor
      }
    }
     
    new Bar().foo(); // => 'foo'

    Use with ES5-style prototypes

    import { mixin } from 'es6-mixin';
     
    function Foo() {
    }
     
    Foo.prototype.foo = function() {
      return 'foo';
    };
     
    class Bar {
      constructor() {
        mixin(this, Foo);
      }
    }
     
    new Bar().foo(); // => 'foo'

    class extends Mixin { ... }

    import { Mixin } from 'es6-mixin';
     
    class Foo extends Mixin {
      foo() {
        return 'foo';
      }
    }
     
    class Bar {
      constructor() {
        Foo.mixin(this);
      }
    }
     
    new Bar().foo(); // => 'foo'

    Install

    npm i es6-mixin

    DownloadsWeekly Downloads

    1,870

    Version

    0.3.0

    License

    MIT

    Last publish

    Collaborators

    • amercier
    • noyesa