前语
不得不说,这篇源码的确很简单。从这篇源码的贡献者列表里,我看到了 偏右大佬的身影~
源码
先看看我今天读的源码:
function omit(obj, fields) {
// eslint-disable-next-line prefer-object-spread
// 这里浅拷贝了一下
const shallowCopy = Object.assign({}, obj);
for (let i = 0; i < fields.length; i += 1) {
// 找到fields对应的属性key,然后从拷贝的目标里边删去该属性key,到达过滤效果
const key = fields[i];
delete shallowCopy[key];
}
return shallowCopy;
}
export default omit;
这段代码十分简单,咱们可以经过 caniuse去查查其兼容性。
tips: 里边加入了我自己的注释
Object.assign
可以看到 Google Chrome 在2016年6月7日发布的51个版本号已经可以支持这个方法,兼容性比较好。
delete
这个命令天然不用说,一向都是支持的。
总结
虽然这篇源码很简单,可是我从中也有所收成。无论是在工作中,还是学习中,编写代码一定要考虑代码的兼容性。