Skip to content
Take control of your method's destiny.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


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., 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.

Something went wrong with that request. Please try again.