728x90

 

두 함수 모두 객체에서 특정 key 값이 있는지를 확인할 수 있다.

hasOwnProperty
hasOwn

 

위 처럼 객체가 해당 키 값을 가지고 있으면 true를 반환해 준다.

심지어 null 값이나 객체를 넣어도 오류 없이 false를 반환해 준다. (예외 처리 안해도 된다! 네이스!!)

 

그러면.. 두 함수 모두 기능이 똑같으니까 입맛대로 쓰면 될까요..?

노오옵!! 앞으로는 hasOwn를 쓰도록!

 

hasOwn이 hasOwnProperty의 상위호환이기 때문이다.

hasOwnProperty가 문제가 있을 때가 있다. 

 

1. Object.create(null) 로 생성 시에 접근할 수 없다.

접근이 불가

2. 객체 내에 선언 시에 덮어쓸 수 없다.

덮어쓰기 안되는 hasOwnProperty

 

본연의 기능을 하는 hasOwn

 

 

 


 

개인적으로 hasOwnProperty를 사용할 때,

오류가 나는 두 경우를 직접 만나지는 못해서 굳이..? 라는 생각도 있지만,

참고 링크 상단에 보이듯

hasOwn()hasOwnProperty()를 대체하는것을 목표로 했다고 한다.

그렇다면.. 사용해 주는 방향으로 버릇을 바꾸는게 좋을 것 같다.

 

참고 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn

 

728x90

+ Recent posts