我正在尝试根据驼峰命名约定向文档对象添加简写。例如,以下代码将在 document
后面附加 qS
,它是 querySelector
的简写形式,而 aEL
则是简写形式-hand 用于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
上的新方法 -因此 document.querySelector
变为 d.qS
在某些时候,我学会了将字符与大括号进行比较以确定其大小写的技巧。 a.e.
"c"<{}; //false
"C"<{}; //true
"E"<{}; //true
"e"<{}; //false
问题是我不明白这是如何工作的,尽管它似乎一直工作得很好。我不太确定代码块被评估为比较的内容,并且很难通过 Google 进行搜索,即使在筛选了 codegolf 等之后,我也没有找到答案。我希望有人能解释一下这个?
注意:我意识到代码解释是不受欢迎的,但我确实检查了元数据以确定这是否有效 https://meta.stackexchange.com/questions/188079/where-to-ask-for-code-explanation
最佳答案
如果您检查alert({}),那么它将显示[object Object]。在这里,您的比较将作为字符串比较进行。所以大写 A-Z 的 ASCII 值是 65-90。 “[”的 ASCII 值为 91,小写 a-z 的 ASCII 值为 97-122。因此,根据大写字母的 ASCII 值,您的代码返回 true,小写字母返回 false。
关于javascript - 与代码块比较确定大写和小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51026270/