내가 보려고 만든 개발 공부 일지

Javascript - in vs hasOwnProperty 본문

Javascript

Javascript - in vs hasOwnProperty

kwangsunny 2021. 7. 12. 23:18

in 연산자는 객체에 지정된 속성이 있는지를 확인한다.

"prop" in obj  -->  객체 obj "prop" 이라는 속성이있다면 true, 없다면 false 리턴한다.

객체 기본 속성인 hasOwnProperty 해당 객체의 속성유무를 판단해 true / false 리턴하는데,

그럼 둘의 차이는 뭘까..?

아래 예제를 보자.

function Person(){};
Person.prototype.eyes = 2;

var kim = new Person();

kim.hasOwnProperty("eyes");  //  false
"eyes" in kim;  //  true

코드에서 객체 kim eyes 직접 가지고있지 않기때문에 hasOwnProperty false 리턴하지만 in true 리턴한다.

, hasOwnProperty는 객체가 직접 가지고있는 속성만 체크하지만, in 은 프로토타입 링크로 연결된 상위 프로토타입 까지 쭈욱 탐색한다.

그래서 "toString" in kim 를 한다면 역시 true 리턴한다.

'Javascript' 카테고리의 다른 글

history.pushState ( 화면 전환 )  (0) 2021.09.21
Javascript - Prototype object  (0) 2021.07.16
Javascript - 프로토타입?  (0) 2021.07.12
call() 과 apply() 의 this 바인딩  (0) 2021.07.02
Falsy / Truthy 한 값  (0) 2021.07.02
Comments