title: Extending Object.prototype JavaScript
body: <p>I am not asking if this is okay:</p>
  
  <pre><code>Object.prototype.method = function(){};
  </code></pre>
  
  <p>This is deemed <strong>evil</strong> by pretty much everyone, considering it messes up <code>for(var i in obj)</code>.</p>
  
  <h2>The Real Question</h2>
  
  <p>Ignoring</p>
  
  <ul>
  <li>Incompetent browsers(browsers that don't support <code>Object.defineProperty</code>)</li>
  <li>Potential for property collision or overriding</li>
  </ul>
  
  <p>Assuming you have some <strong>incredibly</strong> useful method, is this considered wrong/unethical?</p>
  
  <pre><code>Object.defineProperty(Object.prototype, 'methodOnSteriods',{
    value: function(){ /* Makes breakfast, solves world peace, takes out trash */ },
    writable: true,
    configurable: true,
    enumerable: false
  });
  </code></pre>
  
  <p>If you believe the above is unethical, why would they even implement the feature in the first place? </p>