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를 리턴한다.