(Javascript) Symbol.for() : 전역 심볼

Jayden·2023년 3월 27일

Javascript

목록 보기
3/8

Symbol 타입은 이름이 같더라도 모두 다른 존재로 인식한다.
그런데 가끔 전역변수처럼 이름이 같으면 같은 객체를 가리켜야 할 상황도 생긴다. 이럴때 사용하는 것이 Symbol.for()이다.

Symbol.for() 특징

  • 하나의 심볼만 보장받을 수 있음(없으면 만들고, 있으면 가져온다)
  • Symbol 함수는 매번 다른 Symbol 값을 생성하지만, Symbol.for 메소드는 하나를 생성한 뒤 키를 통해 같은 Symbol을 공유한다.
const id1 = Symbol.for('id');
const id2 = Symbol.for('id');

id1 === id2;  // true

Symbol의 이름을 알고 싶을때는
Symbol.keyFor(id1) // "id"

숨겨진 Symbol key 보는 법

1.Object.getOwnPropertySymbols(객체명);

const id = Symbol('id');

const user = {
  name : 'Mike',
  age : 30,
  [id] : 'myid'
}	
										
Object.getOwnPropertySymbols(user);  

//출력
[Symbol(id)]

2. Reflect.ownKeys(user);

const id = Symbol('id');

const user = {
  name : 'Mike',
  age : 30,
  [id] : 'myid'
}	

Reflect.ownKeys(user);

//출력
["name", "age", Symbol(id)]

0개의 댓글