Edit in JSFiddle

var injector = function(){
		var services = [];
		function getParamsList(fn) {
			try {
				var b = fn.toString(),s = b.indexOf('('),e = b.indexOf(')'),
					p = b.substring(s+1,e).replace(/\s/g,'').split(','),err = [];
				for(var i=0; i<p.length; ++i) {
					if(p[i] in services) p[i] = services[p[i]];
					else err.push(p[i]);
				}
				throw Error(); 
			} catch(e) {
				if(err.length > 0)
					console.error(err.join(', ')+' - does not exists!');
				if(e.message !== '') console.error(e.message);
				return p;
			}	
		}
		
		return {
			factory:function(nm,fn) {
				services[nm] = fn.apply(this);
				return this;
			},
			get:function(nm) {
				return services[nm];
			},
			invoke:function(fn) {
				try {
					var _fn = (fn instanceof Function) ? fn.toString() : undefined;
					if(_fn === undefined) throw Error('Function is expected!');	
					fn.apply({},getParamsList(_fn));
					return this;
				} catch(e) {
					console.error(e.message);
				}	
			}
		};
	}();
	
$(document).ready(function(){	
	function foo(serviceC,serviceD) {
		$('#result').html(serviceC.a+serviceD.b);
	};
	
	injector
		.factory('serviceC',function(){
			return {a:12};
		})
		.factory('serviceD',function(){
			return {b:3};
		})
		.invoke(foo);
});
<span id='result'</span>>