![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
手写题
文章平均质量分 51
饮尽杯中月
这个作者很懒,什么都没留下…
展开
-
数组去重总结
原文 双层 for 循环 思想: 双重 for 循环是比较笨拙的方法,它实现的原理很简单:先定义一个包含原始数组第一个元素的数组,然后遍历原始数组,将原始数组中的每个元素与新数组中的每个元素进行比对,如果不重复则添加到新数组中,最后返回新数组;因为它的时间复杂度是O(n^2),如果数组长度很大,效率会很低。 function distinct(arr) { for (let i=0, len=arr.length; i<len; i++) { for (let j=i+1; j原创 2021-07-17 17:10:57 · 152 阅读 · 0 评论 -
数组扁平化
flat(参数) 深度 reduce 方法 + 递归调用 数组转成字符串,再将字符串转成数组原创 2021-07-17 10:40:28 · 120 阅读 · 0 评论 -
手写 instanceof
//原理:实例__proto__(n次) == 构造函数.prototype //左边:实例 //右边:构造函数 function instanceof(left, right) { // 获得类型的原型 let prototype = right.prototype // 获得对象的原型 left = left.__proto__ // 判断对象的类型是否等于类型的原型 while (true) { if (left === null) .原创 2021-06-16 21:50:48 · 237 阅读 · 1 评论 -
手写new
过程 实现 当未使用new创建对象时 this指向window 当使用new时 会传入构造函数和参数,传入的参数为伪数组,需要转为真数组 伪数组agrument调用Array原型上的slice方法,传入0是返回原真数组args 返回的为第一个参数构造函数Person 使得this指向空对象content,且传入args参数 此时如果return content, 会发现content的_proto_指向有问题 使用原生的new时 _proto_指向就没有问题 所以 完整版 ..原创 2021-06-16 21:19:41 · 105 阅读 · 0 评论 -
原生JavaScript实现call、apply和bind
如果用call进行绑定,其实相当于在egg对象里面增加一个person函数,再用egg.person()调用就好了 简单来说就是在egg这个位置开始进行调用,然后执行person函数,如果发现了this就会绑定到egg,因为egg直接执行了person,egg是真正的调用位置,因此this指向了egg 此时的this指向window,person函数进行调用,然后执行newCall函数,发现了this,因此需要进行绑定,person才是真正调用位置,所以this指向person函数 实现call .原创 2021-06-14 21:12:09 · 7375 阅读 · 16 评论 -
手写防抖节流函数
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Do原创 2021-06-13 20:40:52 · 165 阅读 · 0 评论