Graceful Light

hasOwnProperty vs prototype.hasOwnProperty

2016-12-22


hasOwnProperty

for-in 구문을 쓸 때 상속된 프로퍼티나 this구문을 방지하기 위하여 보통 hasOwnProperty로 체크한다.

1
2
3
4
5
for(prop in obj){
if(obj.hasOwnProperty(prop)){
// code...
}
}

문제점

위와 같은 방식은 아래와 같이 hasOwnProperty가 재정의 된 객체에서 오류를 발생할 수 있다.

소스

prototype.hasOwnProperty

따라서 prototype을 사용해 코딩해야한다.

소스

설명

첫번째 방법은 익명 Object를 생성한 후 obj와 prop을 밀어넣는 방식이고
두번째 방법은 기본 Object의 hasOwnProperty를 가져와 obj와 prop을 밀어넣는 방식이다.

두번째 방법이 새(익명) Object를 생성하지 않기에 이 방법을 사용하면 된다.

더 자세하게 알고 싶다면 mdn을 참조한다.

🍺

Buy me a beer 🍗

공유하려면 QR코드를 스캔해주세요