我正在尝试根据驼峰式命名约定为文档对象添加简写形式。例如,以下代码将在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
在某个时候,我学会了比较字符和花括号以确定其大小写的技巧。 a.e.
"c"<{}; //false
"C"<{}; //true
"E"<{}; //true
"e"<{}; //false
问题是,尽管它似乎一直都能完美运行,但我不知道它是如何工作的。我不确定要比较哪个代码块,并且对于Google来说比较困难,即使在遍历codegolf和SO之后,我也没有找到答案。我希望有人可以解释一下?
注意:我意识到对代码的解释不满意,但是我确实检查了元数据以确定它是否有效https://meta.stackexchange.com/questions/188079/where-to-ask-for-code-explanation
答案 0 :(得分:2)
如果您选中alert({}),它将显示[object Object]。在这里,您的比较将作为字符串比较进行。因此大写字母A-Z的ASCII值介于65-90之间。 “ [”的ASCII值为91,小写的a-z的ASCII值为97-122。因此,按照大写字母的ASCII值,您的代码将返回true,小写字母的代码将返回false。