개발을 하다보면 여러가지 이유에따라 빈객체를 확인하고 싶을때가 있습니다
Object.keys 를 사용할수도 있지만 완벽(?)한 조건문을 이용해 빈객체를 구분해봅시다
아래의 코드는 빈객체를 구분할수 있게해주는 코드입니다 하나씩 봅시다
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object
Object.keys 와 동일한 기능을하는것처럼 보이지만 차이가있습니다
둘다 배열 형태로 객체의 속성 키만을 반환 하는점은 동일하지만
Reflect.ownKeys 는 객체의 모든 속성키를 반환합니다
모든속성키에는 Symbol 키가 해당됩니다
Symbol : 데이터 타입중 하나 [라이브러리나 프레임워크에 주로 사용]
다른 데이터 타입과 달리 유일무이한 값을가진다 (unique)
다른 모든 속성 키와 충돌하지 않습니다
const symbol1 = Symbol('unique');
const symbol2 = Symbol('unique');
console.log(symbol1 !== symbol2) //true
라이브러리 사용시 속성키로 사용하여 충돌을 방지하고 내부적으로 사용하는 속성을
숨길수 있다
const libraryObj = {
[Symbol('key1')]: 'value1',
[Symbol('key2')]: 'value2'
};
객체의 생성자(constructor)가 Object 인지 확인함
js 에서 객체를 생성할 때 기본적으로 사용되는 생성자는 'Object'