Однажды отдыхая в диване, я вспомнил мимолетный замечательный ролик из своего детства, который назывался WAT. И там была такая штука как bare words, которая показывалась на примере Ruby.

«Голые слова» (barewords) — это слова без кавычек, которые вы можете использовать в качестве строк.
В JavaScript их, вроде как и нет, поэтому я попробовал их в него пропихнуть, что в целом получилось.
Получился вот такой код:
А реализовано это было вот так:
Как видите, чтобы мы смогли использовать голые слова, мы использовали такие фичи джаваскрипта, как Proxy и with.
При попытке получить свойство из this, из-за происков with, запрос идет в прокси, где мы и возвращаем строковое значение вместо злобной ошибки о отсутствии переменной.
Спасибо за внимание.

Если что, вот ссылочка на Github

«Голые слова» (barewords) — это слова без кавычек, которые вы можете использовать в качестве строк.
В JavaScript их, вроде как и нет, поэтому я попробовал их в него пропихнуть, что в целом получилось.
Получился вот такой код:
И он успешно выводил нужные фразы.with(bareWords) { alert(Иван + Ургант) console.log(We, can, use, bare, words) }
А реализовано это было вот так:
try { let self = this window.bareWords = new Proxy({}, { has: function(target, name) { return !(name in self) }, get: function(target, name) { return name }, }) } catch(e) { console.error('Your browser doesn\'t support bare words.') }
Как видите, чтобы мы смогли использовать голые слова, мы использовали такие фичи джаваскрипта, как Proxy и with.
При попытке получить свойство из this, из-за происков with, запрос идет в прокси, где мы и возвращаем строковое значение вместо злобной ошибки о отсутствии переменной.
Спасибо за внимание.

Если что, вот ссылочка на Github
