# JavaScript 常用函数库

[![MIT License](https://img.shields.io/npm/l/utilsjs.svg?style=flat-square)](https://www.npmjs.com/package/mu-tooljs)

> JavaScript 常用函数库，整合在 Web 项目中经常使用的函数和方法。

#### 下载安装：

```shell
# 使用npm命令下载安装
$ npm i mu-utiljs

# 使用yarn命令下载安装
yarn add mu-utiljs
```

#### 使用方法：

- 通过 JS Module(模块)方式导入使用

  ```html
  <!-- ES6模块导入使用 -->
  <script type="module">
    /**
     * 1、全部引入使用
     **/
    import * as mu from "mu-utiljs";

    // 在浏览器控制台中打印mu-utiljs的所有方法
    console.log(mu);

    // 深拷贝使用实例
    let obj = { key: "value" };
    const newObj = mu.deepCopy(obj);

    /**
     * 2、按需引入使用
     **/
    import { deepCopy, debounce, throttle } from "mu-utiljs";

    // 深拷贝使用实例
    let obj = { key: "value" };
    const newObj = deepCopy(obj);
  </script>
  ```

- 通过 script 标签以 CDN 的形式引入使用

  ```html
  <!-- 将mu-utiljs下载后，在html文件中引入本地脚本 -->
  <script src="./js/mu-utiljs"></script>
  <script>
    // 在浏览器控制台中打印mu-utiljs的所有方法
    console.log(mu);

    // 深拷贝使用实例
    let obj = { key: "value" };
    const newObj = mu.deepCopy(obj);
  </script>
  ```

#### 支持情况：

- **deepCopy() 深拷贝**

  > 对各种数据类型、对象的进行深度拷贝！

  ```js
  /**
   * @param {Object|Array} par // 拷贝的对象
   * @returns Array or Object
   */

  let par = {} || [];
  mu.deepCopy(par); // 返回一个新的对象
  ```

- **debounce() 函数防抖**

  > 函数被频繁调用时使用（触发事件后在 n 秒内函数只能执行一次，如果在 n 秒内又触发了事件，则会重新计算函数执行时间）！

  ```js
  /**
   * @param {function} fn // 要进行防抖操作的函数
   * @param {number} delay = 300 // 间隔时间（默认300毫秒）
   * @returns function
   */

  mu.debounce(fn, delay);
  ```

- **throttle() 函数节流**

  > 连续触发事件但是在 n 秒中只执行一次函数！

  ```js
  /**
   * @param {function} fn // 要进行节流操作的函数
   * @param {number} delay = 300 // 间隔时间（默认300毫秒）
   * @returns function
   */

  mu.throttle(fn, delay);
  ```

- **getFileExt() 获取文件后缀名**

  > 获取文件的后缀名！

  ```js
  /**
   * @param {string} fileName // 要获取带后缀的文件名
   * @returns string
   */

  mu.getFileExt(fileName: string) => string;
  ```

- **getFileSize() 获取文件大小**

  > 主要用于上传文件时（计算文件 单位大小）！

  ```js
  /**
   * @param {string} fileSize // 要进行计算的文件大小
   * @returns string
   */

  mu.getFileSize(fileName: string) => string;
  ```

- **query() 获取url参数**

  > 主要用于获取url参数 如 ?id=666&uid=888！

  ```js
  /**
   * @param {string} key // 要进行计算的文件大小
   * @returns string
   */

  mu.query(key: string) => string;
  ```

- Updating 。。。！
