Neurologically Paralyzing Mouseovers

npm

Need private packages and team management tools?Check out npm Orgs. »

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

4,349

version

0.3.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
  • avatar
Report a vulnerability