二.isKey函数
1.依赖isSymbol
//判断一个对象是否为symbol对象
2.正则判断
(1) 正则 const reIsPlainProp = /^\w*$/;
ps 表示匹配 [0-9a-zA-Z_]。表示数字、大小写字母和下划线。
(2) 正则 const reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/;
ps 表示匹配n.b.a 或者 c[b].a
这个正则比较复杂,导致性能可能会变差
3. 流程分析
1.判断value是不是个数组
2.判断常规类型是不是合法的属性名
3.正则判断处理字符串,还有对象
4.处理路径属性 (value in Object(object))
ps 如果传入了object,并且value还是object的属性名,那就返回true
in :如果指定的属性在指定的对象当中或者原型链当中,则in运算符返回true