6. 深度克隆_ES7**_arr.includes('孙悟空')
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)]`
--------小尾巴
________一个人欣赏-最后一朵颜色的消逝-忠诚于我的是·一颗叫做野的心.决不受人奴役.怒火中生的那一刻·终将结束...