When using a "for in" loop to set a method, the proper method names are set, but the variables used in each function call are clobbered by the last set property.
Example Code
function colorLog() {
    var color = {
        graph: '#88A825',
        node: '#35203B',
        link: '#911146',
        error: '#AC2930',
        info: 'black'
    };
    var logger = {};
    for(var k in color) {
        logger[k] = function(msg) {
            console.log(color[k]);
            console.log("%c" + msg, "color:" + color[k] + ";font-weight:bold;");
        }
    }
    return logger;
}
var log = colorLog();
log.graph("Graph Says");
log.node("Node Says");
log.link("Link Says");
log.error("Error Says");
log.info("Info Says");
Output
black 
Graph Says 
black 
Node Says 
black 
Link Says
black 
Error Says 
black 
Info Says
What am I not understanding about scoping rules?
 
    