title: ES5 Defining Unchangeable Arrays / Property Values
body: <p>When defining an array as a property of an ES5-style object, I want to make it so the property's value cannot be changed.</p>
  
  <pre><code>'use strict';
  
  var global = Object.create(Object.prototype, {
      names: {
          value: ['Barney', 'Trogdor'],
          writable: false
      }
  });
  
  global.names.push('Jackson'); // I expected a read-only error here
  
  console.log(global.names[2]); // &gt;&gt; Jackson
  
  global.names = ['Ooga', 'Booga']; // &gt;&gt; TypeError: "names" is read-only
  </code></pre>
  
  <p>It seems that I have only protected against property assignment.</p>
  
  <p>Is there any way to protect against stuff like <code>Array.push()</code> that modifies my "unwritable" array?</p>