ECMAScript 2015λΆν°, symbolμ numberμ string κ°μ κΈ°λ³Έ μλ£νμ
λλ€.
symbol κ°λ€μ Symbolμμ±μλ₯Ό νΈμΆν΄μ μμ±ν©λλ€.
let sym1 = Symbol();
let sym2 = Symbol("key"); // μ νμ λ¬Έμμ΄ ν€μ¬λ²μ λΆλ³νλ©° μ μΌν©λλ€.
let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, μ¬λ²μ μ μΌν©λλ€.λ¬Έμμ΄μ²λΌ, μ¬λ²μ κ°μ²΄ νλ‘νΌν°μ ν€λ‘ μ¬μ©λ μ μμ΅λλ€.
const sym = Symbol();
let obj = {
[sym]: "value"
};
console.log(obj[sym]); // "value"μ¬λ²μ κ³μ°λ νλ‘νΌν° μ μΈκ³Ό κ²°ν©ν΄ κ°μ²΄ νλ‘νΌν°μ ν΄λμ€ λ©€λ²λ₯Ό μ μΈν μλ μμ΅λλ€.
const getClassNameSymbol = Symbol();
class C {
[getClassNameSymbol](){
return "C";
}
}
let c = new C();
let className = c[getClassNameSymbol](); // "C"μ¬μ©μ-μ μ μ¬λ² μ΄μΈμλ, μ μλ €μ§ λ΄μ₯ μ¬λ²λ€μ΄ μμ΅λλ€. λ΄μ₯λ μ¬λ²λ€μ λ΄λΆ μΈμ΄ λμμ λνλ΄λ λ° μ¬μ©λ©λλ€.
λ€μμ μ μλ €μ§ μ¬λ² λͺ©λ‘μ λλ€:
μμ±μ κ°μ²΄κ° μ΄λ€ κ°μ²΄λ₯Ό μμ±μμ μΈμ€ν΄μ€λ‘ μΈμνλμ§ νμΈνλ λ©μλμ λλ€. instanceof μ°μ°μλ‘ νΈμΆλ©λλ€.
κ°μ²΄κ° μμ μ λ°°μ΄ μμλ₯Ό Array.prototype.concatλ₯Ό μ¬μ©νμ¬ μ§λ ¬λ‘ λνλΌ μ μλμ§λ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°μ λλ€.
κ°μ²΄μ κΈ°λ³Έ λ°λ³΅μλ₯Ό λ°ννλ λ©μλμ λλ€. for-of λ¬ΈμΌλ‘ νΈμΆν©λλ€.
μ κ·μμ λ¬Έμμ΄κ³Ό λΉκ΅νλ μ κ·μ λ©μλμ
λλ€. String.prototype.match λ©μλλ‘ νΈμΆν©λλ€.
μΌμΉνλ λΆλΆ λ¬Έμμ΄μ λ체νλ μ κ·μ λ©μλμ
λλ€. String.prototype.replace λ©μλλ‘ νΈμΆν©λλ€.
μ κ·μκ³Ό μΌμΉνλ λ¬Έμμ΄μ μΈλ±μ€λ₯Ό λ°ννλ μ κ·μ λ©μλμ
λλ€. String.prototype.search λ©μλλ‘ νΈμΆν©λλ€.
νμλ κ°μ²΄λ₯Ό λ§λλ μμ±μ ν¨μ νλ‘νΌν° κ°μ λλ€.
μ κ·μκ³Ό μΌμΉνλ μΈλ±μ€λ€μ μμΉν λ¬Έμμ΄μ λΆν νλ μ κ·μ λ©μλμ
λλ€.
String.prototype.split λ©μλλ‘ νΈμΆν©λλ€.
κ°μ²΄λ₯Ό ν΄λΉ κΈ°λ³Έ κ°μΌλ‘ λ³ννλ λ©μλμ
λλ€.
ToPrimitive μΆμ μ°μ°μΌλ‘ νΈμΆν©λλ€.
κ°μ²΄μ κΈ°λ³Έ λ¬Έμμ΄ μ€λͺ
μ λ§λλ λ° μ¬μ©λλ λ¬Έμμ΄ κ°μ
λλ€.
λ΄μ₯ λ©μλObject.prototype.toStringλ‘ νΈμΆν©λλ€.
κ³ μ ν νλ‘νΌν° μ΄λ¦λ€μ΄ μ°κ΄λ κ°μ²΄μ 'with' νκ²½ λ°μΈλ©μμ μ μΈλ κ°μ²΄μ λλ€.