Я экспериментировал с добавлением сокращения к объекту документа на основе соглашения о присвоении имен в случае верблюда.Например, следующий код добавит document
с qS
, который является сокращенным для querySelector
и aEL
, который является сокращенным для addEventListener
let b, d, e;
for(let k in(d=document)) d[k[0]+k.split("").filter(_=>_<{}).join("")] = d[k];
e=_=>d.qS(_);
b=_=>d.aEL.bind(_);
Я объявляю d
как document
, а затем перебирая каждый из его ключей, определяя буквы регистра верблюда (k[0]
- это первая буква в нижнем регистре, а затем я фильтрую ключ, чтобы найти любые заглавные буквы), а затем применяю первую строчную буквубуква и любые заглавные буквы как новый метод на document
, который ссылается на оригинальный метод - ergo document.querySelector
становится d.qS
В какой-то момент я научился уловке сравнения символа с фигурными скобками, чтобы определить его регистр,ae
"c"<{}; //false
"C"<{}; //true
"E"<{}; //true
"e"<{}; //false
Проблема в том, что я не понимаю, как это работает, хотя, кажется, все время работает идеально.Я не совсем уверен, что блок кода оценивается как сравнительный, и это трудно для Google, и даже после просеивания Codegolf и SO я не нашел ответа.Я надеюсь, что кто-то может объяснить это?
ПРИМЕЧАНИЕ: Я понимаю, что объяснения кода осуждаются, но я проверил мета, чтобы определить, действительно ли это было https://meta.stackexchange.com/questions/188079/where-to-ask-for-code-explanation