Computed Property, Symbol()
: μμ±(Property) μ΄λ¦μ λμ μΌλ‘ μ μνκ±°λ μ κ·Όν λΒ μ¬μ©νλ λ°©λ²μ΄λ€.
const dynamicKey = "age";
const user = {};
user[dynamicKey] = 30; // user["age"] = 30
console.log(user); // { age: 30 }
[]
λ₯Ό μ¬μ©νμ¬ κ°μ²΄ μμ±μ λμ μΌλ‘ μΆκ° λ° μ κ·Ό κ°λ₯νλ€.
κ°μ²΄μ μμ± μ κ·Ό
.
)μ λ¬Έμμ΄ λ¦¬ν°λ΄λ‘λ§ μμ± μ κ·Ό κ°λ₯[]
νκΈ°λ²μ λ³μλ‘ μμ±μ λμ μΌλ‘ μ κ·Όν λ μ¬μ©const key = "name";
const user = { name: "Mike" };
console.log(user.name); // Mike
console.log(user[key]); // Mike
: ES6μμ λμ κ΄Έ κ³ μ ν κ°(primitive value)μ μμ±νλ μλ°μ€ν¬λ¦½νΈ λ΄μ₯κ°μ²΄
Symbol
λ‘ μμ±λ κ°μ μ μΌνκ³ λ€λ₯Έ Symbol
κ°κ³Ό μ λλ‘ μΆ©λνμ§ μλλ€.
μμμ½λ
const sym1 = Symbol("description");
const sym2 = Symbol("description");
console.log(sym1 === sym2); // false
μ μΌμ± 보μ₯
: κ°μ μ€λͺ
μ μ¬μ©ν΄λ κ° Symbol
κ°μ νμ κ³ μ νλ€.
μ¨κ²¨μ§ μμ±
: Symbol
ν€λ‘ μ μλ μμ±μ κΈ°λ³Έμ μΌλ‘ μνμ ν¬ν¨λμ§ μκΈ° λλ¬Έμ μ¨κ²¨μ§ μμ±μ μ μν λ μ μ©νλ€.
( for .. in λ°λ³΅λ¬Έμμλ λ°°μ λλ€)
const user = {
name: "Mike",
};
const showName = Symbol("show name");
user[showName] = function () { // Computed Property μ¬μ©
console.log(this.name);
};
// κΈ°μ‘΄ μμ±κ³Ό μΆ©λνμ§ μμ
console.log(user); // { name: 'Mike' }
user[showName](); // Mike
루ν
λ Object.keys
λ‘ μ κ·Όν μ μλ€.const user = { name: "Mike" };
const id = Symbol("id");
user[id] = 12345;
// μΌλ°μ μΈ λ£¨νλ‘ μ κ·Όν μ μμ
console.log(Object.keys(user)); // ['name']
console.log(user[id]); // 12345
const user = {
name: "Mike",
age: 30,
};
// λμ μμ
//user.showName = function () {}; -> κ·Έμ showNameμ function () {}.
const showName = Symbol("show name");
user[showName] = function () {
console.log(this.name); // Mike
};
user[showName]();
// μ¬μ©μκ° λ³΄λ λ©μμ§
for (let key in user) {
console.log(`κ·Έμ ${key}μ ${user[key]}.`);
}
λ§μ½ user.showName = function () {};
μ΄λΌκ³ μμ± ν consoleμ νμΈνλ©΄ βκ·Έμ showNameμ function () {}.β μ΄λΌλ λ§λ μ λλ λ¬Έμ₯μ΄ μΆλ ₯λλ€.
λ°λΌμ showName
λ©μλλ‘ μΌλ° μμ±κ³Ό μΆ©λνμ§ μλ κ³ μ μμ±μΌλ‘ μ μνκ³ ,
user
κ°μ²΄μλ name
μμ±μ΄ μ‘΄μ¬νλ©°, μ΄λ showName
μ μ¨κ²¨μ§ λ©μλμ²λΌ λμνλ€.
μΈλΆμμ user[showName]
μ μ μΈν λ€λ₯Έ λ°©μμΌλ‘ μ΄ λ©μλλ₯Ό μ κ·Όν μ μλ€.
[]
):Symbol
λ± λμ μΈ ν€λ₯Ό νμ©ν΄μΌ ν λ μ μ©νλ€.Object.keys
μμ μ μΈλλ€.μ°Έκ³ μλ£