ES6 #12 Символы (Symbols)
HTML-код
- Опубликовано: 17 сен 2018
- #YauhenK #webDev #ECMAScript #ES6
Всех приветствую в курсе «ES6».
В данном видео-курсе мы с вами рассмотрим все ключевые нововведения в стандарте ECMAScript 2015. Разберём практические примеры, а так же проведём аналогию стандартов ES6 и ES5. В своё время это было самое крупное и революционное обновление стандарта, которое добавило кучу новых возможностей начиная новыми способами объявления переменных и новым типом функций, заканчивая новым типом данных symbol, классами, итераторами и генераторами. Все эти фичи мы подробно изучим.
✒ Репозиторий курса:
✔ GitHub: github.com/YauhenKavalchuk/es6
✒ Используемые ресурсы и инструменты:
✔ Atom (Редактор кода): atom.io/
✔ Node.js: nodejs.org/en/
✔ Browserify/Watchify: github.com/browserify/watchify
✔ NPM http-server: www.npmjs.com/package/http-se...
✒ Полезные ссылки:
✔ Exploring ES6: exploringjs.com/es6/
✔ Babel: babeljs.io/docs/en
✒ Полезные курсы на канале:
✔ JavaScript: • JavaScript
✒ Полный список готовых и планируемых курсов:
✔ Trello: trello.com/b/R6rD7qq8
✒ Автор курса:
✔ RUclips: / yauhenkavalchuk
✔ Instagram: / yauhenkavalchuk
✔ Twitter: / yauhenkavalchuk
✔ VK: YauhenKavalchuk
✔ LinkedIn: / yauhenkavalchuk
✔ GitHub: github.com/YauhenKavalchuk
✔ VK (Группа): webdevcom
✒ Поддержать развитие канала: github.com/YauhenKavalchuk/yo...
Я так и не понял одного. Для каких конкретных задач они нужны? Сохранение состояния?
Нет. Создание уникальных ключей внутри объектов. Когда объекты действительно большие. Либо используются при создании библиотеки для уникальных имён и не допущения конфликта имён снаружи библиотеки
learn.javascript.ru/symbol
Прекрасное объяснение материала. У вас талант!
Спасибо)
читала-читала и не совсем понимала, посмотрев видео, стало понятнее)) спасибо
Пожалуйста
Классные уроки, только не забрасывай, жду с нетерпением, async await
Спасибо! Буду стараться и дальше развивать канал
Спасибо большое за урок! Теперь стало понятно
Спасибо за отзыв
Спасибо!!
Всё чётко и понятно!!!
Пожалуйста
spasibo kruta abisnil!!!!
Спасибо, познавательно !
Пожалуйста
спасибо, видео про использование symbol в map или weakmap было бы классно посмотреть)
Мне самому было бы интересно посмотреть на это
вот что я ценю, спасибо
Пожалуйста
Спасибо! все понял
👍
действительно крутое объяснение js symbol ов. Огромное спасибо! Даг бог вам здоровье!
Спасибо
nice explanation. thnks
You’re welcome
Законспектировал большую часть видео, думаю на собеседовании не упаду грязь в лицом после такого исчерпывающего видео про Symbol
Не должны!)
Как ц Вас получилось, что два символа имеют одинаковое имя? Если имена переменных отличаются, а олинаковые только дополнительные описания котоорые вообще не являются обязательными?
спасибо!
Пожалуйста
Очень круто и доступно, спасибо! Но я не очень понял - если в объекте объявлять свойство символом без for - как получить значение такого ключа?
Если вы мне назовёте хотя бы один адекватный кейс зачем это может понадобиться, то я расскажу)
@@YauhenKavalchuk Ну... собственно я не смог придумать где вообще можно использовать символ кроме как в свойствах объекта) Может быть Вы могли бы описать другой вариант их использования, тогда я смогу понять.. Наверное:)
Не могу, ни разу не использовал их сам. Вообще они часто применяются при написании собственных библиотек, или плагинов для создания уникальных ключей, но думаю, в ближайшее время ни вам ни мне это не грозит)
@@YauhenKavalchuk Понял, спасибо!Отлегло:)
Спасибо
Пожалуйста
спасибо!!!!!!!!!!
Пожалуйста
Зачем создавать символ в объекте без "for" если невозможно получить к нему доступ?
Ну, Евгений, у тебя самый нормальный видос по символу в РУ сегменте молодец. Люди делают замечания, что читаешь, у меня тоже такая проблема была на видосах. Просто там другой подход используется, чтобы научиться говорить естественно - пересказывать.Кстати легко, посмотри метод Станиславского - актёрская игра, чтобы понять суть, что нужно держать в голове. Далее голосом сам себе или воображаемому апоненту в споре доказываешь, предположим что такое символ, раза три, затем из полученного Г материала нарезаешь в Адобе примьере суть, лучшие фрагменты, уверен все пройдёт легко, если воспользуешься этим актерским приёмом.
6:33 Каким образом можно обратиться к полю [Symbol('password')], не делая символ глобальным?
let sym = Symbol('password')
let person = {
name: "Jack",
age: 20,
[sym]: 'Jack2020'
}
console.log(person[sym])
@@ghambaryanschannel2088 этот способ очевиден))
В ролике говорится лишь о том, как "вытащить" значение глобального символа 06:33.
Пример из ролика:
let person = {
name: 'Jack',
age: 20,
[Symbol.for('password')]: 'Jack20'
};
console.log(person[Symbol.for('password')]);
А я о другом... Я об объявлении НЕ глобального символа в литерале объекта. И способу обращения к этому свойству) Без занесения его в реестр...
let person = {
name: 'Jack',
age: 20,
[Symbol('password')]: 'Jack20' //Symbol без for. Символ - НЕ глобальный.
};
console.log( ? );
Почему я тогда весь объект не могу построить на символах?
А какой в этом смысл?
Подскажите, пожалусйта, название трека в начале видео :-)
Ох, уже и не вспомню, что-то из бесплатной медиатеки RUclips
А где symbol.iterator о котором ссылка в итераторах? Или я прозевал чтото ?
Не совсем понял вопрос. Я забыл добавить ссылку, или рассказать тему?
@@YauhenKavalchuk в видео по итераторам ruclips.net/video/HToDur7Gkkw/видео.html
вы говорите что нужно создать свойство Symbol.iterator
и ссылаетесь на это видео по Symbol
но здесь ничего нет по Symbol.iterator.
Таким образом не понятно , что делает Symbol.iterator и откуда оно взялось в итераторах
Благодарочка)
Пожалуйста)
Какое практическое применение?
При обычной разработке нету. А так, как было озвучено в видео: при создании библиотек для добавления уникальных имён. Лично я ни разу не применял символы
@@YauhenKavalchuk Спасибо и за отличное видео, и за этот ответ. Кучу всего пересмотрел - и Ваш ролик самый понятный.
console.log(person) >>> Object {name: "Jack", age: 20, Symbol(password): "Jack20"}
вот так можно получит сивол
Спасибо за информацию!
за 2,5 года работы ни разу не понадобился данный тип
За 7 лет работы так и не пригодился)
Дикция неплохая, но... Ключевые правила и идеи каждого каста лучше дополнительно выводить текстом в виде каких-то правил/тезисов на экран, как это делают многие другие блогеры.
И разные анимашек можно бы добавить хоть немного.
Это один из первых курсов, который появился на канале года 2 назад. На тот момент скилл монтажа не так был развит. Теперь всё намного нагляднее
👍
👍
@@YauhenKavalchuk як я зрозумів, що створений через for символ є глобальним, наприклад Symbol.for(‘mySymbol’) , і з ним можна взаємодіяти в будь- якій частині коду, проте , як тоді з проблемою повторенням імен властивостей, коли ми знову ім‘я властивості вкажем, як Symbol.for(‘mySymbol’) то перезапишемо раніше створену? В чому різниця з тим, коли я два рази ключ вкажу однаковий без використання Symbol?А коли без for, то ніяк з властивістью/методом не зможу взаємодіяти?
Почему символ задается через квадратные скобки?
Это динамическое значение ключа объекта, или как-то так. Суть в том, что в качестве названия ключа можешь передать переменную, значение которой и будет ключем.
const keyName = 'age'; const person = {name: 'Vasya', [keyName]: 20};
Лучше объясняется в видео на этом канале, называется "ES6 #7 Объекты (Object)".
@@user-yn9cu7bj7s Спасибо!
Да, Глеб всё верно сказал)
@@user-yn9cu7bj7s, завернул. Пока тоже не вижу оправдания, только если чтоб выпутаться из дерьмокода в легаси. Так сказать, выход из Матрицы. Тоже наверное библиотечное применение какое-то...
Женя привет, как дела ?
Привет, ок)
я так и не понял зачем мне символы, зря только потерял время
3:36 что он сказал
«В качестве аргумента мы так же можем отправлять имя для символа»
Зря говорите, что символы придуманы и используются только для создания уникальных ключей. Таким образом вы исключаете не менее важную тему системных символов, например Symbol.iterator, используемый для создания кастомных итераторов.
На момент записи других идей использования символов не пришло в голову
let person = {
name: "Jack",
age: 20,
[Symbol("password")]: "Jack20",
}
console.log(person) // Object {name: "Jack", age: 20, Symbol(password): "Jack20"}
Ну и в чем его смысл?
Если вы обычный разработчик, мало вероятно что хоть раз воспользуетесь таким типом данных
Такое чувство как будто с книжки читаешь
Своими словами не мог объяснить?
Нет, начну объяснять своими словами, напишут что лью воду. А вообще, вы отчасти правы - я зачитываю сценарий, который до этого написал
@@YauhenKavalchuk ну зачем тезисна
Да он сам не понимает, зазубрил по learning javascript и высоал на ютуб. Mission complied.
шляпа полнейшая, кто вообще юзает это на практике сложно представить
🤷♂️
Почему на 6:28 обращаемся person[Symbol.for('password')] , через квадратные скобки к символу , а не через точку ?
А вы пробовали обратиться через точку, получилось?
@@YauhenKavalchuk "Если мы хотим использовать символ при литеральном объявлении объекта {...}, его необходимо заключить в квадратные скобки." Поэтому мы не можем обратиться к символу ч/з точку
Он должет "вычислиться", или вернуть вычисленное значение, поэтому через квадратные скобки. Через точку только к свойствам, которые созданы из литералов строк.