Bare words в JavaScript

в 23:12, , рубрики: javascript, WAT

Однажды отдыхая в диване, я вспомнил мимолетный замечательный ролик из своего детства, который назывался WAT.
И там была такая штука как bare words, которая показывалась на примере Ruby.
image
«Голые слова» (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, запрос идет в прокси, где мы и возвращаем строковое значение вместо злобной ошибки о отсутствии переменной.

Спасибо за внимание.
image
Если что, вот ссылочка на Github

Автор: mitinsvyat

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js