目的
初步了解如何调试代码
omit.js作用
返回一个剔除掉指定属性的新的对象
/**
*
* @param {object} obj 待处理的对象
* @param {Array} fields 需要剔除的属性集合
* @returns
*/
function omit(obj, fields) {
// eslint-disable-next-line prefer-object-spread
var shallowCopy = Object.assign({}, obj); // 代码使用Object.assign方法,对要处理的对象进行浅拷贝处理
for (var i = 0; i < fields.length; i += 1) {
var key = fields[i];
delete shallowCopy[key]; // 对需要删除的key进行遍历删除浅拷贝对象
}
return shallowCopy; // 返回新对象
}
export default omit;
开始
1、git clone https://github.com/benjycui/omit.js.git
2、查看packjson
3、npm包使用npm i --save omit.js
"scripts": {
"build": "father doc build --storybook",
"compile": "father build",
"coverage": "father test --coverage",
"gh-pages": "father doc deploy",
"lint": "eslint .",
"prepublishOnly": "npm run compile && np --yolo --no-publish",
"start": "father doc dev --storybook",
"test": "father test"
},
使用
1、创建一个js文件,通过node命令运行
const omit = require('omit.js')
let obj = {
name: "wwh",
age: 23,
location: "西安"
}
console.log(omit.default(obj, ['location']));
console.log(omit.default(obj, ['age']));
console.log(omit.default(obj, ['name']));
默认导入需要使用require,要想使用import需要在packjson增加 "type": "module"
2、测试用例查看
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']), {});
});
});
通过npm run test运行 omit库使用了assert断言,自己对assert断言并不了解,通过去node官网,了解到assert.deepEqual(深度相等意味着子对象的可枚举“自己的”属性也通过一些定义的规则递归评估)
代码调试
1、在Vscode中按 ctrl + shift + p,打开输入 >auto attach。默认是智能(smart)(配置auto-attach)
2、在需要的位置打断点,通过运行npm run test进行调试
总结
1、了解到了omit.js源码如何编写
2、通过运行测试用例让自己了解到了一些node.js的api
3、联系了一下简单的代码调试
4、对单元测试并不了解,在debugger的使用不熟练,还要继续提高