• 本文参加了由大众号@若川视界 发起的每周源码共读活动,  点击了解详情一起参与。
  • 这是源码共读的第36期,链接

前语

不得不说,这篇源码的确很简单。从这篇源码的贡献者列表里,我看到了 偏右大佬的身影~

源码

先看看我今天读的源码:

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

image.png
可以看到 Google Chrome 在2016年6月7日发布的51个版本号已经可以支持这个方法,兼容性比较好。

delete

image.png
这个命令天然不用说,一向都是支持的。

总结

虽然这篇源码很简单,可是我从中也有所收成。无论是在工作中,还是学习中,编写代码一定要考虑代码的兼容性。