1. 如何实现深度克隆

  • 利用 JSON 方法 (没办法克隆函数数据)

`JSON.parse(JSON.stringify(xxx))`

  • 自定义方法

检查所有数据类型的方法 `Object.prototype.toString.call(obj).slice(8, -1)`

  • function deepClone(obj) {
    let newObj = null;
    //判断obj是否是对象或者数组
    const type = checkType(obj);
    if (type === 'Object') {
    //创建一个新对象
    newObj = {};
    } else if (type === 'Array') {
    newObj = [];
    } else {
    return obj;
    } //遍历
    for (let key in obj) {
    //获取属性的值
    const value = obj[key]; //检查属性值是否是对象或者数组
    if (checkType(value) === 'Object' || 'Array') {
    //特殊处理
    newObj[key] = deepClone(value);
    } else {
    //基本数据类型的处理
    newObj[key] = value;
    }
    }
    return newObj;
    }

2. ES7

指数运算符(幂): **

`Array.prototype.includes(value)` : 判断数组中是否包含指定value

3. nodejs

是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

特点:

搭建服务器

异步的非阻塞的I/O(I/O线程池)

事件循环机制

单线程

跨平台

缺点:

回调函数嵌套太多、太深(俗称回调地狱)

单线程,处理不好CPU 密集型任务

应用场景:

I/O 密集型的领域:如 Web 开发前端渲染,前端构建。

低延迟的网络应用:如restful API、即时聊天。

现阶段由淘宝牵头使用量越来越多,越来越多公司都使用了nodejs技术优化服务器,它日趋重要

4. 谈谈 commonjs 模块化语法

暴露模块的内容

暴露的本质        module.exports 指向的值        默认为{}  

module.exports

module.exports = xxx

module.exports.xxx = xxx

exports

exports.xxx = xxx

引入其他模块

require('模块路径')

自定义模块路径必须以 ./ 或 ../ 开头,如果不是就报错 Cannot find module 'module1'

模块文件后缀名可以省略, js 文件  json 文件 node 文件,只有以上三种文件,文件后缀名可以省略

5. 数组去重的方法

`[...new Set(arr)]`

最新文章

  1. 再见,OI
  2. 误删/usr文件夹解决办法
  3. Mysql数据库表关于几个int类型的字符长度
  4. Greedy:Fence Repair(POJ 3252)
  5. git查看历史命令
  6. bzoj 2038 莫队算法
  7. WPF界面特殊字符处理
  8. 将UIImage保存到iOS照片库和对应程序沙盒中-b
  9. 使用JavaScript扫描端口
  10. RAC RMAN备份
  11. 用Bash脚本将Linux普通用户添加为系统管理员
  12. Linux入门之常用命令(14) kill
  13. VM虚拟机安装centos详细图文教程
  14. ASP.NET开发中修改代码而不重启网站
  15. 项目Alpha冲刺——代码规范、任务及计划
  16. Spring之Bean的配置方式
  17. 【bzoj1901】dynamic ranking(带修改主席树/树套树)
  18. 每日英语:Political Gridlock, Beijing Style
  19. 【搜索】POJ-3050 基础DFS
  20. C#之父

热门文章

  1. Quartz.net 3.x使用总结(一)——入门介绍
  2. SQL Server数据库读写分离提高并发性
  3. js 数字前自动补零
  4. python 写代码笔记 2017.6.15
  5. Blender 快捷键笔记
  6. 2.5 elif
  7. undefined reference to symbol 'pthread_create@@GLIBC_2.2.5' 的修改方法
  8. 版本控制工具 - TortoiseSVN
  9. react-native获取屏幕尺寸
  10. windows生成库文件