6. 深度克隆_ES7**_arr.includes('孙悟空')
2024-09-20 02:07:38
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)]`
最新文章
- 再见,OI
- 误删/usr文件夹解决办法
- Mysql数据库表关于几个int类型的字符长度
- Greedy:Fence Repair(POJ 3252)
- git查看历史命令
- bzoj 2038 莫队算法
- WPF界面特殊字符处理
- 将UIImage保存到iOS照片库和对应程序沙盒中-b
- 使用JavaScript扫描端口
- RAC RMAN备份
- 用Bash脚本将Linux普通用户添加为系统管理员
- Linux入门之常用命令(14) kill
- VM虚拟机安装centos详细图文教程
- ASP.NET开发中修改代码而不重启网站
- 项目Alpha冲刺——代码规范、任务及计划
- Spring之Bean的配置方式
- 【bzoj1901】dynamic ranking(带修改主席树/树套树)
- 每日英语:Political Gridlock, Beijing Style
- 【搜索】POJ-3050 基础DFS
- C#之父
热门文章
- Quartz.net 3.x使用总结(一)——入门介绍
- SQL Server数据库读写分离提高并发性
- js 数字前自动补零
- python 写代码笔记 2017.6.15
- Blender 快捷键笔记
- 2.5 elif
- undefined reference to symbol 'pthread_create@@GLIBC_2.2.5' 的修改方法
- 版本控制工具 - TortoiseSVN
- react-native获取屏幕尺寸
- windows生成库文件