【若川视野 x 源码共读】第36期 | omit.js 剔除对象中的属性

2,088 阅读1分钟

前言

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

源码

先看看我今天读的源码:

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 这个命令自然不用说,一直都是支持的。

总结

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