omit.js 剔除对象中的属性源码阅读

113 阅读1分钟

源代码片段

 function omit(obj, fields){
      /**
       * Object.assign(target,source)
       * 属性从一个或多个源对象的自身可枚举的属性复制到目标对象,返回修改之后的目标对象。注意目标对象的值会发生变化
       * 且Object.assign为浅拷贝
       */
      const shadowCopy = Object.assign({},obj)
      // 在这加上了fieds的类型判断
      if(fields instanceof Array){
        for(let i = 0; i < fields.length; i++){
          const key = fields[i]
          delete shadowCopy[key]
        }
      }
      return shadowCopy
}

father打包相关

  1. 支持cjs,ems,umd三种格式的打包
  • cjs是es5模块系统,主要是用于node环境,以及ssr
  • ems是es6模块系统,主要用于浏览器渲染,支持tree shaking
  1. 支持用 babel 或 rollup 打包 cjs 和 esm

总结:

  1. 重新复习了Object.assign的细节知识点。
  2. 使用vscode 代码调试功能进行了
  3. 简单了解了单元测试
  4. 简单了解了使用father打包组件相关的知识

感悟

如果单纯的看源码的话,这个很快就会看完,但是因为要完成作业,所以会更认真地去对待,但是还是感觉写得不够充实。