JavaScript
객체 프로퍼티 존재 확인하기
AgileJung
2022. 6. 12. 16:24
728x90
반응형
코딩 테스트를 하면서 자바스크립트의 메서드를 더욱더 단단하게 공부해야겠다는 생각이 들었다.
객체에 대해서 말해보자.
객체
객체는 key와 value을 한 쌍으로 이루어진 형태이다.
특정 프로퍼티(Key) 확인하기
객체 안의 특정 프로퍼티의 존재를 확인하고 싶다면
(1) in 연산자를 사용해보자.
const obj = {
name: "suin",
age: "18"
};
console.log("name" in obj); //true
in 연산자를 사용하면 해당 프로퍼티가 객체 안에 있는지 없는지를 boolean 값으로 출력해준다.
(2) Reflect.has(객체, "프로퍼티") 는 ES6에서 도입된 문법으로 in 연산자와 같은 역할을 한다.
const obj = {
name: "suin"
};
console.log(Reflect.has(obj, "name")); //true;
(3) 객체.hasOwnProperty("프로퍼티") 메서드도 in 연산자, Reflect.has()와 같은 역할을 한다.
하지만, 상속받은 프로퍼피는 false를 반환한다.
const obj = {
name: 'suin'
};
console.log(obj.hasOwnProperty('name')); //true;
console.log(obj.hasOwnProperty('age')); //false;
여기서 상속받은 프로퍼티란?
객체가 속한 프로토타입 체인 상에서 존재하는 프로토타입 메서드를 말한다. (내장 함수의 개념이라고 생각하면 편할 것 같다.)
객체의 프로퍼티의 존재 유무를 확인하는 3가지의 방법의 차이점은 상속받은 프로퍼티를 어떤 값을 반환하는 가?라고 보면 될 것 같다.
아래는 객체의 프로퍼티를 확인하는 3가지 방법으로 객체 프로토타입의 메서드인 toString을 검색했을 때의 결과다.
// Reflect.has(객체)
console.log(Reflect.has(obj, "toString")); //true;
// in 연산자
console.log("toString" in obj); //true
// 객체.hasOwnProperty()
console.log(obj.hasOwnProperty('toString')); //false;
hasOwnProperty() 메서드를 사용했을 때만 상속받은 프로퍼티를 false 값으로 반환하는 것을 확인할 수 있다.
728x90
반응형