title: Benefits of ES6 Reflect API
body: <p>I've been working on upgrading some code to use ES6 syntax. I had the following line of code:</p>
  <pre class="lang-js prettyprint-override"><code>delete this._foo;
  </code></pre>
  <p>and my linter raised a suggestion to use:</p>
  <pre class="lang-js prettyprint-override"><code>Reflect.deleteProperty(this, '_foo');
  </code></pre>
  <p>You can find the documentation for this method <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty" rel="nofollow noreferrer">here</a>.</p>
  <p>The MDN docs state:</p>
  <blockquote>
  <p>The Reflect.deleteProperty method allows you to delete a property on
  an object. It returns a Boolean indicating whether or not the property
  was successfully deleted. It is almost identical to the non-strict
  delete operator.</p>
  </blockquote>
  <p>I understand that the <code>delete</code> keyword does not return a value indicating success, but it is much less verbose.</p>
  <p>If I'm not dependent on the success/failure of <code>delete</code> is there any reason to favor <code>Reflect.deleteProperty</code>? What does it mean that <code>delete</code> is non-strict?</p>
  <p>I feel like a lot of the use cases for the <code>Reflect</code> API are for resolving exceptional cases and/or providing better conditional flow, but at the cost of a much more verbose statement. I'm wondering if there's any benefit to use the <code>Reflect</code> API if I'm not experiencing any issues with my current usages.</p>