Nonconformist Propaganda Machine

    @cherrypulp/mixin

    1.0.10 • Public • Published

    Mixin

    codebeat badge Issues License npm version

    In JavaScript we can only inherit from a single object. There can be only one [[Prototype]] for an object. And a class may extend only one other class. There’s a concept that can help here, called “mixins”.

    Installation

    npm install @cherrypulp/mixin

    Quick start

    Define a mixin

    class FooTrait {
        static bar = 'bar';
        
        constructor() {
            this.baz = this.constructor.bar;
        }
        
        foo() {
            return this.baz;
        }
    }

    Use a mixin

    class FooClass extends mixin(FooTrait) {}
     
    const foo = new FooClass();
    foo.foo(); // return "bar"

    Be careful with names collision!

    class FooClass extends mixin(FooTrait) {
        static bar = 'BAT';
        
        // or
        constructor() {
            super();
            this.baz = 'BAT';
        }
        
        // or
        foo() {
            return 'BAT';
        }
    }
     
    const foo = new FooClass();
    foo.foo(); // return "BAT"

    Versioning

    Versioned using SemVer.

    Contribution

    Please raise an issue if you find any. Pull requests are welcome!

    Author

    License

    This project is licensed under the MIT License - see the LICENSE file for details.

    Install

    npm i @cherrypulp/mixin

    DownloadsWeekly Downloads

    2

    Version

    1.0.10

    License

    MIT

    Unpacked Size

    32.6 kB

    Total Files

    11

    Last publish

    Collaborators

    • dbennani_cherry
    • danielsum
    • cherrypulpcom
    • monkeymonk
    • anthonypauwels