title: Using delete in JavaScript getter / setter to delete the getter / setter
body: <p>This is a question about how JavaScript getters and setters work.</p>
  
  <p>Mozilla's implementation of log4j as a JavaScript module (partial implementation, just the important parts needed for the intended use cases such as in Firefox Sync) contains the following getter/setter definition.  </p>
  
  <p>What does the 'delete' in the getter/setter do for you? What does that even mean? It seems to have the effect of making the first use have different results from following uses (but if so, how)?</p>
  
  <pre><code>get repository() {
    delete Log4Moz.repository;
    Log4Moz.repository = new LoggerRepository();
    return Log4Moz.repository;
  },
  set repository(value) {
    delete Log4Moz.repository;
    Log4Moz.repository = value;
  },
  </code></pre>