Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 93 из 114 · 8 мин
Symbol(), description, toString, valueOf, глобальный реестр Symbol.for и Symbol.keyFor.
Мой плагин тоже пишет order.id. Ваш номер заказа — всё! Хе-хе.
Символ — уникальный ключ. Два символа с одинаковым описанием всё равно разные, и чужой код его случайно не затрёт.
Symbol()Symbol("описание") — каждый вызов даёт новое уникальное значение. Описание — только для отладки.const a = Symbol("id"), b = Symbol("id");
const order = { id: 1, [a]: "наш" };
console.log(a === b, order[a], Object.keys(order));description · toString() · valueOf()sym.description — текст описания, toString() → "Symbol(id)", valueOf() — сам символ.const s = Symbol("заказ");
console.log(s.description, s.toString(), s.valueOf() === s);Symbol.for() · Symbol.keyFor()Symbol.for("key") возвращает один и тот же символ для одного ключа во всей программе (даже между iframe); Symbol.keyFor(sym) — его ключ.const a = Symbol.for("app.order"), b = Symbol.for("app.order");
console.log(a === b, Symbol.keyFor(a), Symbol.keyFor(Symbol("x")));Добавляешь своё свойство в чужой объект — делай ключ символом.
Создай символ TAG с описанием "app" и функцию mark(obj), которая ставит obj[TAG] = true и возвращает объект. Метка не должна появляться в Object.keys и JSON.stringify.
Выберите один ответ.
Что вернёт Symbol("a") === Symbol("a")?
Выберите один ответ.
Что вернёт Symbol.for("a") === Symbol.for("a")?
Проверяем состояние обучения…