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

377 阅读1分钟

1. 前言

2. 前置知识

  • Object.assign()  静态方法将一个或者多个源对象中所有可枚举自有属性复制到目标对象,并返回修改后的目标对象。
  • 了解assert断言测试

3. 源码调试

  1. 打断点,运行test命令
  • ctrl + shift + p 输入debug:Debug npm Script 选择 test

image.png 或者: image.png 2. assert断言

  • assert.deepEqual(copy, benjy)断言语句用于比较两个对象是否深度相等。如果两个对象的属性和属性值都一样,断言通过。
  • assert.notEqual(copy, benjy)断言语句用于判断两个对象是否不相等。在这里,它会断言copy对象和benjy对象是不同的对象引用。
  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) {
    const key = fields[i];
    delete shallowCopy[key];
  }
  return shallowCopy;
}

过程:

  1. 通过Object.assign方法创建了一个浅拷贝对象。Object.assign方法用于将一个或多个源对象的属性复制到目标对象中,并返回目标对象。
  2. for (let i = 0; i < fields.length; i += 1):通过for循环遍历传入的fields数组,以获取要删除的字段。
  3. delete shallowCopy[key];:使用delete操作符从shallowCopy对象中删除指定的字段。这样,在返回时,将得到一个不包含指定字段的新对象。
  4. 将删除指定字段后的浅拷贝对象返回。

4. 总结

这次的源码并不难理解,学习使用测试用例调试代码。

万事开头难,迈出自己的第一步,慢慢进步。↖(^ω^)↗