title: google closure compiler's advanced optimization isn't optimizing some variables
body: <p>I'm running into an issue with the Google Closure Javascript compiler with advanced optimization. As the documentation suggests, to preserve exported Javascript I do something like this:</p>
  
  <pre><code>var myClass = function() {
     this["myFunc"] = this.myFunc;
     this["myFunc2"] = this.myFunc2;
  };
  window["myClass"] = myClass;
  
  myClass.prototype = {
      myFunc: function() { alert("myFunc"); },
      myFunc2: function() { alert("myFunc2"); }
  };
  </code></pre>
  
  <p>The issue is that sometimes, for whatever reason, <code>myFunc</code> and <code>myFunc2</code> don't get shortened, and I see code like this in the final output:</p>
  
  <pre><code>x.myFunc=x.myFunc;x.myFunc2=x.myFunc2;
  </code></pre>
  
  <p>This is obviously less than ideal.</p>
  
  <p>How can I prevent this from happening?</p>
  
  <hr>
  
  <p>Further experimentation has shown that there are certain keywords, e.g. 'get' that don't get compiled.</p>
  
  <pre><code>var myClass = function() {
     this["get"] = this.get;
     this["myFunc2"] = this.myFunc2;
  };
  window["myClass"] = myClass;
  
  myClass.prototype = {
      get: function() { alert("myFunc"); },
      myFunc2: function() { alert("myFunc2"); }
  };
  </code></pre>
  
  <p>Compiles into</p>
  
  <pre><code>function a() {
    this.get = this.get;
    this.myFunc2 = this.a
  }
  window.myClass = a;
  a.prototype = {get:function() {
    alert("myFunc")
  }, a:function() {
    alert("myFunc2")
  }};
  </code></pre>
  
  <p>I still don't know what's causing it though.</p>