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)]`

6. 深度克隆_ES7**_arr.includes('孙悟空')的更多相关文章

  1. [转载] javascript实现深度克隆

    js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递: 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内 ...

  2. js对象的深度克隆

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. javascript中对象的深度克隆

    记录一个常见的面试题,javascript中对象的深度克隆,转载自:http://www.2cto.com/kf/201409/332955.html 今天就聊一下一个常见的笔试.面试题,js中对象的 ...

  4. Java的深度克隆和浅度克隆

    说到克隆,其实是个比较简单的概念,跟现实生活正的克隆一样,复制一个一模一样的对象出来.clone()这个方法是从Object继承下来的,一个对象要实现克隆,需要实现一个叫做Cloneable的接口,这 ...

  5. Java List的深度克隆

    关于java List的深度克隆 List是java容器中最常用的顺序存储数据结构之一.有些时候我们将一组数据取出放到一个List对象中,但是可能会很多处程序要读取他或者是修改他.尤其是并发处理的话, ...

  6. javascript最新深度克隆对象方法

    javascript最新深度克隆对象方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  7. javascript深度克隆与javascript的继承实现

    1.javascript深度克隆: //注意这里的对象包括object和array function cloneObject(obj){ var o = obj.constructor === Arr ...

  8. 深度克隆---js对象引用

    首先,我们要知道,javascript中除了基本类型(number,string,boolean,null,undefined)之外就是引用类型了,也可以说就是js对象了. 引用类型的赋值其实是对象保 ...

  9. Javascript深度克隆一个对象

    Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍就是原来对 像的地址.那怎么来做呢?答案是“克隆”. 克隆有两种方法:一 ...

随机推荐

  1. Linux 命令详解(十三)如何启动、关闭和设置ubuntu防火墙

    sudo  ufw enable|disable 由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.1 ...

  2. 第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)

    一. 前言 前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍: 后端调用大约有这些:WebCient.WebRequest.Httpclient.W ...

  3. 第二节:比较DateTime和DateTimeOffset两种时间类型并介绍Quartz.Net中用到的几类时间形式(定点、四舍五入、倍数、递增)

    一. 时间的类型 1. 背景 这里为什么要介绍时间类型呢,明明是定时调度篇,原因是在定时任务中,任务什么时间开始执行,什么时间结束执行,要用到各种各样的时间模式,虽然这不能算是一个复杂的问题,但在正式 ...

  4. JaVa第二周学习总结

    第一周学习的时候上传图片用的是网站外链然后导致出现了极为尴尬的情形...然后我就把第一周的全改成本地上传了. 首先列出所做任务 1 安装IDEA 2学习二三章视频,课本 3调试代码,上传码云 4总结问 ...

  5. ext.net单元格内容换行显示

    增加style .x-grid3-cell-inner {     white-space: normal; }

  6. 四十四、Linux 线程——线程同步之死锁以及线程和信号

    44.1 死锁 死锁: 两个线程试图同时占有两个资源,并按不同的次序锁定相应的共享资源 解决方式: 按相同的次序锁定相应的共享资源 使用函数 pthread_mutex_trylock(),它是函数 ...

  7. 拖动DIV

    链接:https://www.cnblogs.com/joyco773/p/6519668.html   移动端:div在手机页面上随意拖动   1 <!doctype html> 2 & ...

  8. 循环语句(for,while,do……while),方法概述

    循环结构 分类:for,while,do……while (1)for语句 格式: for(初始化表达式:条件表达式:循环后的操作表达式){ 循环体: } 执行流程: a.执行初始化语句 b.执行判断条 ...

  9. OGG微服务架构入门

    数据复制任务路线图 设置数据复制必须执行许多任务. 下表列出了构建分发路径的阶段. Task Description 运行Oracle GoldenGate Configuration Assista ...

  10. 关于 min_25 筛的入门以及复杂度证明

    min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人 ...