title: javascript functions are objects?
body: <p>I am struggling with a Javascript question for some time now and I was not able to find an explanation on the web. I guess it is because I do not enter the right keywords which might also be related to why I am struggling with this at all.</p>
  
  <p>My basic assumption is that it is possible to alter objects:</p>
  
  <pre><code>&gt; var x = {'n': 2};
  &gt; x['n']
  2
  &gt; x['n'] = 3;
  3
  </code></pre>
  
  <p>pheww that worked. But still (functions are objects, too):</p>
  
  <pre><code>&gt; var addn = function(a) {
      var n = 2;
      return n + a;
  }
  
  &gt; addn(3);
  5
  &gt; addn['n'] = 3;
  3
  &gt; addn(3);
  5
  </code></pre>
  
  <p>This time I was not able to change 'n'. Is there a way to fix this while keeping the functional flavor? As opposed to going fully OO. A related question I have would be how to maintain dependencies of functions for the purpose of for example testing - again w/o going OO? Of cause I am looking for a solution but if possible I would also like to understand which mechanism in Javascript makes me struggling.</p>
  
  <p>Cheers,</p>
  
  <p>Mark</p>
  
  <p>Disclaimer:
  By mentioning OO I do not intent to say anything against OO. And I do not intent to say anything against VI or Emacs either. If I somehow hurt your feelings please skip this one.</p>