项目源码地址:github
omit.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浅拷贝源对象到一个新对象,在新对象执行删除操作,不影响源对象
测试模块代码
import assert from 'assert';
import omit from '../src';
describe('omit', () => {
it('should create a shallow copy', () => {
const benjy = { name: 'Benjy' };
const copy = omit(benjy, []);
assert.deepEqual(copy, benjy);
assert.notEqual(copy, benjy);
});
it('should drop fields which are passed in', () => {
const benjy = { name: 'Benjy', age: 18 };
assert.deepEqual(omit(benjy, ['age']), { name: 'Benjy' });
assert.deepEqual(omit(benjy, ['name', 'age']), {});
});
});
使用assert断言模块,测试代码运行效果
deepEqual:深度遍历,判断是否相等
notEqual:直接判断不相等,相当于!=
describe,it测试语法的使用
延伸:
用assert.notStrictEqual判断严格不相等,相当于!==