Using same name for class/function and object? JavaScript
===

I've looked [here][1] and basically (as far as I can tell) you can't use the same name for a function and an object, but looking at the following code, this does not seem to be the case. Can anyone tell me how this works?

    ;(function($){
    	$.fn.superfish = function(op){
    
    		var sf = $.fn.superfish,
    			c = sf.c,
    			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
    ...			
    	};
    
    	var sf = $.fn.superfish;
    ...
    	sf.c = {
    		bcClass     : 'sf-breadcrumb',
    		menuClass   : 'sf-js-enabled',
    		anchorClass : 'sf-with-ul',
    		arrowClass  : 'sf-sub-indicator',
    		shadowClass : 'sf-shadow'
    	};	
    ...
    })(jQuery);

And superfish has a reference to itself within its deceleration. Would this not cause infinite recursion? 
  [1]: http://stackoverflow.com/questions/3663775/object-name-same-a-function-name