1. 前言
-
本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
-
这是源码共读的第36期,链接:omit.js 剔除对象中的属性
2. 前置知识
3. 源码调试
- 打断点,运行test命令
- ctrl + shift + p 输入debug:Debug npm Script 选择 test
或者:
2. assert断言
assert.deepEqual(copy, benjy)断言语句用于比较两个对象是否深度相等。如果两个对象的属性和属性值都一样,断言通过。assert.notEqual(copy, benjy)断言语句用于判断两个对象是否不相等。在这里,它会断言copy对象和benjy对象是不同的对象引用。
- 具体代码
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;
}
过程:
- 通过
Object.assign方法创建了一个浅拷贝对象。Object.assign方法用于将一个或多个源对象的属性复制到目标对象中,并返回目标对象。 for (let i = 0; i < fields.length; i += 1):通过for循环遍历传入的fields数组,以获取要删除的字段。delete shallowCopy[key];:使用delete操作符从shallowCopy对象中删除指定的字段。这样,在返回时,将得到一个不包含指定字段的新对象。- 将删除指定字段后的浅拷贝对象返回。
4. 总结
这次的源码并不难理解,学习使用测试用例调试代码。
万事开头难,迈出自己的第一步,慢慢进步。↖(^ω^)↗