- PVSM.RU - https://www.pvsm.ru -
Однажды отдыхая в диване, я вспомнил мимолетный замечательный ролик из своего детства, который назывался WAT [1].
И там была такая штука как bare words, которая показывалась на примере Ruby.
«Голые слова» (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 [2] и with [3].
При попытке получить свойство из this, из-за происков with, запрос идет в прокси, где мы и возвращаем строковое значение вместо злобной ошибки о отсутствии переменной.
Спасибо за внимание.
Если что, вот ссылочка на Github [4]
Автор: mitinsvyat
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/260382
Ссылки в тексте:
[1] WAT: https://www.destroyallsoftware.com/talks/wat
[2] Proxy: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Proxy
[3] with: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/with
[4] Github: https://github.com/wasiher/bare_words_js
[5] Источник: https://habrahabr.ru/post/333030/
Нажмите здесь для печати.