for...in 반복문
for...in 반복문은 객체 자체에서 정의한 프로퍼티뿐만 아니라 상속 프로퍼티도 순회 대상에 포함. 반면, 키-값과 관련된 내장 메서드 대부분은 상속 프로퍼티는 제외하고 객체 자체 프로퍼티만을 대상으로 동작 
let animal = {
  eats: true
};
let rabbit = {
  jumps: true,
  __proto__: animal
};
alert(Object.keys(rabbit)); 
for(let prop in rabbit) alert(prop); 
for(let prop in rabbit) {
  let isOwn = rabbit.hasOwnProperty(prop);
  if (isOwn) {
    alert(`객체 자신의 프로퍼티: ${prop}`); 
  } else {
    alert(`상속 프로퍼티: ${prop}`); 
  }
}
rabbit은 animal을, animal은 Object.prototype을, Object.prototype은 null을 상속 
animal이 Object.prototype를 상속받는 이유는 객체 리터럴 방식으로 선언하였기 때문 
Object.keys, Object.values 같이 객체의 키-값을 대상으로 무언가를 하는 메서드 대부분은 상속 프로퍼티를 제외하고 동작
