1.0.0-aminya.1 • Published 4 years ago

@aminya/mixto v1.0.0-aminya.1

Weekly downloads
1
License
-
Repository
github
Last release
4 years ago

Mixto: A simple mixin superclass Build Status

npm install @aminya/mixto

JavaScript Classes (ES6)

To create a mixin, subclass mixto:

const Mixin = require('mixto/lib/es6')

class MyMixin extends Mixin {
  static classMethod() { console.log("foo"); }
  instanceMethod() { console.log("bar"); }
}

Then mix into classes with .includeInto:

class MyClass {
  static initClass() {
    MyMixin.includeInto(this); // adds all the mixin's class properties or prototype properties to the target class if they aren't already defined
  }
}
MyClass.initClass();

MyClass.classMethod();
(new MyClass).instanceMethod();

Or extend individual objects with .extend:

const myObject = {a: 1, b: 2};
MyMixin.extend(myObject);   // adds all the mixin's prototype properties to the target object if they aren't already defined
myObject.instanceMethod();

Or build standalone instances of your 'mixin':

const standalone = new MyMixin;
standalone.instanceMethod();

CoffeeScript 1 Classes (ES5)

To create a mixin, subclass mixto:

Mixin = require 'mixto'

class MyMixin extends Mixin
  @classMethod: -> console.log("foo")
  instanceMethod: -> console.log("bar")

Then mix into classes with .includeInto:

class MyClass
  MyMixin.includeInto(this)

MyClass.classMethod()
(new MyClass).instanceMethod()

Or extend individual objects with .extend:

myObject = {a: 1, b: 2}
MyMixin.extend(myObject)
myObject.instanceMethod()

Or build standalone instances of your 'mixin':

standalone = new MyMixin
standalone.instanceMethod()