JS 심볼

Symbol은 숫자형 데이터(number), 문자형 데이터(string), 논리형데이터(boolean)처럼 원시형 데이터 중 하나.

  • 심볼은 고유성을 간직 => 독립적인 데이터 공간을 차지하고 있다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const me = Symbol("전우치");
    console.log(me); // Symbol(전우치)
    console.log(typeof me); // symbol

    const clone = Symbol("전우치");
    console.log(clone); // Symbol(전우치)

    console.log(me == clone); // false
    console.log(me === clone); // false

회원 중 동명이인이 존재한다면

1
2
3
4
5
6
7
8
9
10
const member1 = {
"김동현" : "1번",
"김민재" : "2번",
"김민재" : "3번",
"김성욱" : "4번"
}
for(person1 in member1) {
console.log(person1);
// 김동현, 김민재(회원중 동명이인이었던 한명은 없음), 김성욱
}
  • 동일한 key값을 갖고 있는 명칭을 피하기 위해서는 심볼을 적용한다. 심볼은 나열 방식이 아니기 때문에 [일반 객체]에서 반복문을 사용하는 도구들은 사용 불가
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    const member2 = {
    [Symbol("김동현")] : "1번",
    [Symbol("김민재")] : "2번",
    [Symbol("김민재")] : "3번",
    [Symbol("김성욱")] : "4번"
    }
    for(person2 in member2) {
    console.log(member2); // 반복 적용 불가
    }

    const member2_name = Object.getOwnPropertySymbols(member2);
    console.log(member2_name);
    // [Symbol(김동현), Symbol(김민재), Symbol(김민재), Symbol(김성욱)]

    const [mem1, mem2, mem3, mem4] = member2_name;
    console.log(mem1.toString().substr(7, 3)); // 김동현
    console.log(mem2); // Symbol(김민재)
    console.log(mem3); // Symbol(김민재)
    console.log(mem4); // Symbol(김성욱)

    substr(인덱스번호, 개수)


REFERENCE
뷰(Vue.js) 프로그래밍 과정 _ 하이미디어 아카데미

  • © 2020-2025 404 Not Found
  • Powered by Hexo Theme Ayer