- 本文参加了由公众号@若川视野 发起的每周源码共读活动, 点击了解详情一起参与。
- 这是源码共读的第36期,链接:juejin.cn/post/711878…
Object.assign
先来说说Object.assign,这个方法用于将可枚举属性从一个或者多个源对象复制到目标对象,这种复制是浅复制,就是复制对象的第一层属性,如果是基本数据类型会复制它的值,如果是引用数据类型,会复制它的引用地址。最后返回被修改后的目标对象。
Oimt.js源码
> > 本次源码功能: 剔除对象中的属性,并返回一个新对象
接下来话不多说,直接上源码:
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()方法,传入空对象和Obj,会返回一个浅拷贝Obj的对象,然后遍历传入的数组,删除对象中对应的属性。
总结
- 学习到Object.assign方法的定义和功能
- 学习到Omit.js的源码