title: What does a property of an object is enumerable mean in JavaScript?
body: <p><code>Object.propertyIsEnumerable</code> can determine whether an property is enumerable or not. And that means the prop can be enumerated by <code>for...in</code>, but properties inherited through prototype chain are not considered by this method.</p>
  
  <p>I am wondering whether those inherited props are enumerable?</p>
  
  <pre><code>     var obj1 = {
          'a': 'b'
      },
      obj2 = {};
      var obj2Proto = Object.create(obj1);
      obj2.__proto__ = obj2Proto;
      obj2.c = 'd';
      for (var key in obj2) {
        console.info(key, obj2.propertyIsEnumerable(key))
        // c true; a false
      }
      console.info(Object.getOwnPropertyDescriptor(obj2, 'a')) // undefined
  </code></pre>
  
  <p>I am totally confused.</p>