Using delete in JavaScript getter / setter to delete the getter / setter
<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>
