Javascript) Reflection

minkyung·2022년 5월 27일
0

자바스크립트

목록 보기
2/4

리플렉션 (Reflection)
변수의 타입을 체크하고 객체의 구조를 탐색하는 과정

만약에 인자 값을 두개 이상 받는데 각각 타입이 다르다면, 인자의 타입에 따라 처리하는 방식이 다르기 때문에 인자 값을 사용하기 전에 체크해야함.

인자를 주고 받을 때 인자의 length 값은 상관 없음.
하지만 인자의 data type이 다르면 의도한 결과와 다를 수 있음. 이 때 들어오는 인자 값을 구분해주는 과정이 필요함.
(오버로딩 처럼 쓰려고)

오버로딩: 동일한 메서드명에 매개변수의 타입이나 개수만 바꿔 동일 명칭의 메서드를 여러개 정의하는것



방법1)

typeof: 피연산자의 데이터 타입을 반환하는 연산자 (원시 타입까지 구분 가능)

function test(param){
  switch(typeof param){
    case "number" :
    break;
 
    case "string" :
    break;
 
    case "object" :
    break;
 
    case "boolean" :
    break;
  }
}
 
test(1);
test("hello");
test({});
test(true);
출처: https://multifrontgarden.tistory.com/88 [우리집앞마당:티스토리]

instanceof: 개체가 특정 클래스의 인스턴스인지 여부를 나타내는 비교연산자 (어떤 객체인지까지 구별 가능)

📎 JavaScript의 리플렉션



방법2)

hasOwnProperty: hasOwnProperty() 메소드는 객체가 특정 프로퍼티를 가지고 있는지를 나타내는 불리언 값을 반환한다.

함수 안에서 내가 원하는 타입, 프로퍼티가 true면 함수 작동/ else break; 로 원하는 타입만 구분해서 받을 수 있다.

const object1 = {};
object1.property1 = 42;

console.log(object1.hasOwnProperty('property1'));
// expected output: true

console.log(object1.hasOwnProperty('toString'));
// expected output: false

console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false
profile
프론트엔드 개발자

0개의 댓글