define(['./functions', '../function/bind', '../array/forEach', '../array/slice'], function (functions, bind, forEach, slice) {
/**
* Binds methods of the object to be run in it's own context.
*/
function bindAll(obj, rest_methodNames){
var keys = arguments.length > 1?
slice(arguments, 1) : functions(obj);
forEach(keys, function(key){
obj[key] = bind(obj[key], obj);
});
}
return bindAll;
});