202108-09 手写代码

99 阅读1分钟
  1. 多维数组转一维数组:[].concat.apply([],arr) arr.flat for循环加concat拼接 [].concat(...arr)

  2. 排序 两层for循环如果[j]>[j+1]定义额外变量 temp=[j] [j]=[j+1] [j+1]=temp

  3. 深拷贝1.判断是否数组2.对象的话for循环,如果key是对象递归。 assign没有多级属性可以实现深拷贝

  4. 手写new 1object.create(obj.prototyoe) 2return obj.apply(newObj,args) 原理是定义一个新对象的prototype的为原obj在apply改变this指向

  5. 手写instanceof,右侧的prototype是否等于左侧的proto 不是的话左侧的proto继续往上赋值

  6. 实例化出来的prototype是否等于左侧的_proto_

  7. 防抖节流timer=null 如果!=null clear(timer)否则timer=setTimeout() fn.apply(this,arg) timer=null

  8. 原生ajax newHTML,ajax.open setRequestHeader send onReadyDtate.change

  9. 数组去重 indexof!==-1 push 对象的唯一性, Array.from(new Set(arr))

  10. 斐波那契 if(n==1||n==2)return1 否则return fn(n-2)+fn(n-1)