Wondering what’s next for npm?Check out our public roadmap! »


    1.0.0 • Public • Published

    What is liberate?

    liberate is a function that turns a method operating on a this value into a function explicitly taking that value as its first argument.

    What, that's it?

    Yep! It's actually insanely useful in many circumstances.

    Did you know that the non-mutating array methods actually work on any array-like? It's true! Many people are accustomed to using them like this:

    // Get the arguments to this function except the first.
    Array.prototype.slice.call(arguments, 1)

    But ew, what's with that Array.prototype and call junk? Why can't I just call it like a normal function? Well, you can:

    var liberate = require('liberate')
      , slice = liberate(Array.prototype.slice)
    slice(arguments, 1)

    You still have to reference Array.prototype.slice, but you do it once and then you can slice as many things as you want without the verbosity.

    I looked at the source and it's just one line that's super scary-looking. Is this a joke?

    No joke. liberate is legitimately useful. Why not make a module of it?

    It's so short, why not just define it wherever you use it?

    While you're busy repeating yourself, I'll be busy actually coding.

    That's not an argument.

    It's not? Oh well. Use the module or don't. It's up to you.

    Why am I arguing with myself anyway?


    Ripped straight from sinful.js, as I found it useful on its own.




    npm i liberate2

    DownloadsWeekly Downloads






    Last publish


    • avatar