Symbol
ES6
μμ λμ¨ μμ λ°μ΄ν°ν (Primitive DataType) μ μΌμ’
μΌλ‘ κ°μ²΄μ Unique
ν μμ±μ λ§λ€μ΄ λ€λ₯Έ λΌμ΄λΈλ¬λ¦¬μ μΆ©λμ νΌνκΈ° μν¨μ΄λ€.
- Undefined
- Null
- Boolean
- Number
- String
- Object
- Symbol
Syntax
Symbol([description]);
- description
- μ νμ (Optional) λ¬Έμμ΄λ‘ λλ²κΉ μ μ¬μ©ν μ μλ μ€λͺ μ΄λ€.
- μ체μ μΌλ‘ μ¬λ³Όμ μ κ·Όνλ μ©λλ‘ μ¬μ©ν μ μμ
Description
κΈ°λ³Έμ μΌλ‘ μ μμ μ¬λ³Όμ μμ±νλ €λ©΄ μλμ κ°μ΄ μ νμ λ¬Έμμ΄κ³Ό ν¨κ» Symbol()
μ μ°λ©΄ λλ€.
var sym1 = Symbol();
var sym2 = Symbol('foo');
var sym3 = Symbol('foo');
λ§€λ² μλ‘μ΄ μ¬λ³Όμ μμ±νκΈ° λλ¬Έμ μλ κ°μ΄μ 쑰건μ μ±λ¦½ν μ μλ€.
console.log(Symbol('foo') === Symbol('foo')) // false
new
μ°μ°μλ₯Ό μ΄μ©ν λ¬Έλ²μ TypeError
λ₯Ό λ°μνλ€.
var sym = new Symbol(); // TypeError
λ°λμ μ¬λ³Ό λνΌ κ°μ²΄ μμ±μ΄ νμνλ©΄ Object() ν¨μλ₯Ό μ΄μ©νμ¬ μ¬μ©κ°λ₯νλ€.
var sym = Symbol('foo');
typeof sym; // "symbol"
var symObj = Object(sym);
typeof symObj; // "object"
μ¬λ³Όμ μμ±
μ¬λ³Όμ μμ±μ λ€μ 3κ°μ§ λ°©λ²μ΄ μλ€.
- κ³ μ ν μ¬λ³Ό μμ±
var sym = Symbol('foo');
- μ¬λ³Ό λ μ§μ€νΈλ¦¬μμ μ°Ύμμ 볡μ¬
var sym = Symbol.for('foo');
- 미리 μ μλ μμ© μ¬λ³Ό μ¬μ©
Symbol.iterator
μμ©μ¬λ³Όμ νΉλ³ν μ©λλ₯Ό μν΄μ λ§λ€μ΄ λμ μ¬λ³Όμ΄λ©° λνμ μΈ μμ© μ¬λ³Όμ λ€μκ³Ό κ°λ€.
- Symbol.iterator
- μ΄ν°λ¬λΈν κ°μ²΄λ₯Ό μ μνκΈ° μν μ¬λ³Ό
- Symbol.hasInstance
instanceof
λ₯Ό νμ₯νκΈ° μν μ¬λ³Ό
- Symbol.match
String.prototype.match
λ©μλμ νμ₯
β Generator Template Literals β