![downloads](https://img.shields.io/npm/dt/es.shim.svg) ![version](https://img.shields.io/npm/v/es.shim.svg) # es.shim > `es.shim` 提供了部分新API, 以及一些常用的扩展方法。具体如下: ```js ├── Obejct │ └── .empty(any) // 判断对象是否为空对象 │ └── .groupBy(arr, fn) // 数组分组, 返回分组后的对象 │ └── .hasOwn(any, key) // 安全版的 Object.prototype.hasOwnProperty() ├── Obejct.prototype │ └── .toParams() // 把对象转为 key1=value1&key2=value2 格式 │ ├── Map │ └── .groupBy(any) // 数组分组, 返回分组后的对象 │ ├── Array.prototype │ ├── .flat(depth) // 数组降维 │ ├── .flatMap(fn) // 等价于 map(fn) -> flat(1) │ ├── .at(index) // 读取指定位置的元素, 负值则从后往前读 │ ├── .findLast(fn) // 查找匹配的最后一项 │ ├── .findLastIndex(fn) // 查找匹配的最后一项的索引值 │ ├── .toSorted(fn) // 数组排序, 返回一个副本(不改变原数组) │ ├── .toReversed(fn) // 反转数组, 同样返回一个副本 │ ├── .toSpliced(fn) // 数组截取, 同样返回副本 │ ├── .with(index, newValue) // 创建一个副本,再修改副本中的元素, 返回副本 │ ├── .group(fn) // 数组分组 │ └── .groupToMap(fn) // 数组分组, 返回Map对象 │ ├── Set.prototype │ ├── .union(other) // 合并2个集合 │ ├── .equals(other) // 判断2个集合是否一致(仅元素相同, 无关顺序) │ ├── .difference(fn) // 返回不存在于另一个集合的所有元素集合 │ ├── .symmetricDifference(fn) // 返回当前集合与给定集合中, 不同时存在的所有元素集合 │ ├── .intersection(fn) // 返回共有的元素集合 │ ├── .isSubsetOf(fn) // 判断当前集合是否为给定集合的子集 │ ├── .isSupersetOf(fn) // 判断当前集合是否为给定集合的子超集 │ ├── .isDisjointFrom(fn) // 判断当前集合,是否与给定集合完全不重合 │ ├── Date │ └── .isDate(any) // 判断对象是否为 日期对象 ├── Date.prototype │ ├── .getWeek() // 获取当前是本月第几周 │ ├── .getFullWeek() // 获取当前是本年度第几周 │ └── .format(formatStr) // 把日期按指定格式转换 │ ├── String.prototype │ ├── .splice(index, len, pad) // 类似数组的splice方法 │ ├── .htmlspecialchars() // 字符串HTML安全转义 │ ├── .tohtml() // htmlspecialchars的还原 │ ├── .xss() // 字符串安全转义 │ ├── .escape() // js特殊字符的转义 │ ├── .at(index) // 读取指定位置的字符, 负值则从后往前读 │ ├── .toJson() // 将url参数转为对象 │ ├── .lt(version) // 判断是否小于目标版本号 │ ├── .lte(version) // 判断是否小于或等于目标版本号 │ ├── .gt(version) // 判断是否大于目标版本号 │ ├── .gte(version) // 判断是否大于或等于目标版本号 │ └── .eq(version) // 判断是否等于目标版本号, 1.0和1.0.0这里会返回true, 而用 == 或 ===, 无法得到正确的结果 │ ├── Number │ ├── .parse(str) // 将安全范围内的数字字符串转为数字类型 │ └── .fromString(str) // 将字符串转为数字类型 ├── Number.prototype │ ├── .toFixed(digits) // 修正版的toFixed │ └── Promise └── .defer() // 创建一个延迟的Promise对象 ```