Nature Preceded Machines

    atlas-bind-methods

    1.0.1 • Public • Published

    atlas-bind-methods

    Binds an instance's prototype methods to itself.


    Why

    Suppose you have a class which uses instance variables in its methods:

    // Animal.js
    module.exports = class Animal {
      constructor(sound){
        this.sound = sound;
      }
      rawr(){
        console.log(this.sound)
      }
    }

    Normally, the following won't work:

    const Animal = require("./Animal");
    const cat = new Animal("meow!");
    const rawr = cat.rawr;
    rawr(); // TypeError: Cannot read property 'sound' of undefined

    It fails because the reference loses the method's context, but you already knew that! The fix is pretty simple -- just bind the function to the instance:

    ...
    const rawr = cat.rawr.bind(cat)
    rawr() // meow!

    But, this is kind of annoying when I have to do this for many methods. Enter atlas-bind-methods...

    Example

    This package provides a concise function which lets you do the binding in one line:

    const Animal = require("./Animal");
    const bind = require("atlas-bind-methods");
    const cat = bind(new Animal("meow!"));
    const rawr = cat.rawr;
    rawr() // meow!

    Or, if you prefer the side effect, that's fine too:

    ...
    const cat = new Animal("meow!");
    bind(cat);
    const rawr = cat.rawr;
    rawr() // meow!

    Caveats

    This doesn't support subclassing, so it would only pre-bind the prototype methods of the direct constructor which is used to instantiate the object.

    Install

    npm install --save atlas-bind-methods
    

    Install

    npm i atlas-bind-methods

    DownloadsWeekly Downloads

    6

    Version

    1.0.1

    License

    Apache-2.0

    Unpacked Size

    5.68 kB

    Total Files

    6

    Last publish

    Collaborators

    • atlassubbed