코드스피츠 86 객체지향 자바스크립트 - 2회차 part2 (step 31)

KHW·2021년 3월 16일
1

js-study

목록 보기
17/39

== vs ===

== : 비교할 수 있는 형태로 변환 시킨다 (타입이 다를경우 강제형변환)

ex) 254 == '254' //true

=== : 형변환을 하지 않고 연산한다.

ex) 254 === '254' //false

type 체크하기

const type = (target,type)=>{
    if(typeof type == "string"){
        if(typeof target != type) throw `invalid ${target} : ${type}`;
    }
    else if(!(target instanceof type)) throw `invalid type ${target} : ${type}`;
    return target;
};

type에서는 "number" , "boolean" , "string" 같은 예시를 넣어 첫번째 if문을 검사한다.(객체 아닌것들 체크) 그 후 다시 if문을 통해 체크를 진행한다.

else if 문에서는 문자열 형태의 type이 아닌 것들 (Array,Set...)등을 체크하는 역할을 하는데 만약 처음 if(typeof type == "string")가 없다면 if(typeof target != type)에서 false한 애들이 전부 else if문을 시도하다 오류가 남으로 필요하다.

간단히 string type(boolean,number,string)이라면 그에따라 체크 해주고
string type이 아니라면(Array,Set..) 그에따라 체크해준다.

type 체크한 것을 적용시키기

인자나 형태가 잘못된 것을 확인할 수 있다.

const test = (arr, _ = type(arr,Array))=>{
  console.log(arr)
};

test([1,2,3]); //정상작동
test(123); //type함수에서 throw 

Object.freeze vs Ojbect.seal

공통점 : 객체를 밀봉하면 그 객체에는 새로운 속성을 추가할 수 없고, 현재 존재하는 모든 속성을 설정 불가능 상태로 만들어줍니다

Object.seal의 경우 쓰기 가능한 속성의 값은 밀봉 후에도 변경할 수 있습니다

ex)

let freeze = { val: 10}
let seal = { val : 10}
Object.freeze(freeze)	
Object.seal(seal)

freeze.val = 1000	//값의 변경
seal.val = 1000		//값의 변경
console.log(freeze, seal)	// {val: 10} {val: 1000}

실제 변경된 값은 Object.seal안에 있는 값만 변경가능하다.

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글