javascript symbol 심볼

ash3767·2021년 9월 5일
0

자바스크립트

목록 보기
24/27

참고자료 : https://www.youtube.com/watch?v=E9uCNn6BaGQ
참고자료 : https://poiemaweb.com/es6-symbol

우리가 property 정의를 하게될때 ,

const obj = {
  1     : 'one',
  false : 'boolean'
}

Object.keys(obj); // ["1" , "false"]

obj['1'] // "one"
obj['false'] // "boolean"

사용해서 Object 를 이용해서 값을 불러올수 있었는데 ,

symbol 을이용해서 정의할 수가 있다.

📌 Symbol

Symbol 은 유일한 식별자를 만들때 사용하며 , 변경 불가능한 원시 타입의 값이다.
심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다.

Symbol 을 생성할땐 ,

let symbol = Symbol(); 이런식으로 new 를 사용하지 않는다.

const a = Symbol();
const b = Symbol();

console.log(typeof a); // symbol
console.log(typeof b); // symbol

console.log(a) // Symbol()
console.log(b) // Symbol()

console.log(a===b) // false
const id = Symbol('id');

📌 Symbol 유일 한 값

Symbol 값은 유일한 값이므로 Symbol 값을 키로 갖는 프로퍼티는 다른 어떠한 프로퍼티와도 충돌하지 않는다.

const id  = Symbol('id');
const id2 = Symbol('id');

console.log(id); // Symbol(id)
console.log(id2); // Symbol(id)

출력이 똑같이 나온다. 그럼 두개를 비교하면 어떻게 될까 ??

const id  = Symbol('id');
const id2 = Symbol('id');

console.log(id); // Symbol(id)
console.log(id2); // Symbol(id)

console.log(id===id2); // false
console.log(id===id2); // false

📌 심볼을 객체의 키로 사용

import { log } from 'console';

const id = Symbol('id');
const user = {
  name : 'ash',
  age : 3,
  [id] : 'myid',
}

log(user);
// { name: 'ash', age: 3, [Symbol(id)]: 'myid' }

Object.keys(user); // ["name" , "age"]

id 에 값은 출력되지가 않는다. 마찬가지로 키가 Symbol 로 되어있다면 건너 뛰게 된다.

profile
꾸준함이란 ... ?

0개의 댓글