• 手写代码部分


    手写代码

    如何实现深拷贝?

    • 1、简易版及问题:JSON.parse(JSON.stringify());无法拷贝函数和一些特殊的对象。
    • 2、lodash中的cloneDeep。

    如何用正则实现 trim()?

      /(^s*)|(s*$)/g
    • /正则表达式/
    • ^ 匹配输入字符串开始的位置
    • s 匹配空字符,包括空格、制表符、换页符等等
    • * 匹配零次或多次
    • | 或者
    • $ 匹配输入字符串的结束位置
    • g 全局搜索
    • String.replace(/(^s*)|(s*$)/g,"")

    不用 class 如何实现继承?用 class 又如何实现?

    • extends super
    • 不用 class 如何实现继承?用prototype

    如何实现数组去重?

    • [...new Set([1,2,1,3,4,5,3,8,7])]
    • for循环对比第一个元素,push新数组

    实现一个new

        new一个函数,JS编译器会做的四件事情:
      • 1、创建一个新的空的对象。
      • 2、将构造函数的作用域赋给新对象(因此this就指向了这个对象)。
      • 3、执行构造函数中的代码(为这个属性添加属性)。
      • 4、如果这个函数有返回值,则返回;否则,就会默认返回新对象。

    实现bind、call、apply

    实现call和bind

      • 改变this指向
      • 传入参数
      • 返回结果

    实现call和bind

    • 改变this指向
    • 传入参数
    • 返回函数

    数组拍平

      var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
    • 原生方法 - 最简单:
      arr.flat(Infinity) // flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。参数默认:1
    • 正则:
      JSON.stringify(arr).replace(/[|]/ig, '').split(',')
    • toString()
      arr.toString().split(',')
    • reduce / forEach / map
      function flat(arr) { if (!Array.isArray(arr)) return false let res = arr.reduce((prev, cur) => { return prev.concat(Array.isArray(cur) ? flat(cur) : cur) }, []) return res; };

    斐波那契实现

    f(num) return num<=2 && num>0 ? 1 : f(num-1)+f(num-2);
  • 相关阅读:
    Opencv-Python 学习
    Python图片处理
    sae flask 微信公众平台开发
    Python 定位字符串
    Python检测IP合法 是否为公网IP
    Python requests 为pfsense 添加Routes
    lua-nginx-module 学习
    CDN 学习笔记
    教程
    2020-2021-1 20209327 《Linux内核原理与分析》第十二周作业
  • 原文地址:https://www.cnblogs.com/wenshaochang123/p/14768876.html
Copyright © 2020-2023  润新知