React中有一个很特别的工具函数——keyOf,它定义在src/vendor/core/keyOf.js文件中,源代码不长,就是返回了对象的(第一个)key(必须是ownProperty的key),如下:
var keyOf = function(oneKeyObj) {
var key;
for (key in oneKeyObj) {
if (!oneKeyObj.hasOwnProperty(key)) {
continue;
}
return key;
}
return null;
};
既然如此,为什么不直接使用字符串常量呢?
使用字符串常量最大的问题,就在于压缩混淆时,无法参与优化。而使用keyOf这个函数的好处,就在于,压缩混淆阶段,其具体值可以被替换成任意字符串,参与优化,同时又不影响源代码中的语义,可谓一举两得。