bind curry *

by Fabian Allel

JavaScript

function bind(ctx, fn) {
    return function () {
        return fn.apply(ctx, arguments);
    }
}

function curry(fn) {
    var slice = Array.prototype.slice,
        args = slice.call(arguments, 1);
    return function () {
        var newargs = slice.call(arguments);
        return fn.apply(this, args.concat(newargs));
    };
}


var unObj = {
    nombre: "Manuel",
    edad: 32
};

function getNombre() {
    return this.nombre;
}

function setNombre(nombre) {
    this.nombre = nombre;
}

function getEdad() {
    return this.edad;
}

function setEdad(edad) {
    this.edad = edad;
}
var bindToUnObj = curry(bind, unObj),
    getUnObjNombre = bindToUnObj(getNombre),
    setUnObjNombre = bindToUnObj(setNombre);
setUnObjNombre("caca");
console.log(getUnObjNombre());