2024面试题汇总

  1. 如可判断对象是不是空对象?

    1.1可以使用Object.keys(obj).length===0,判断出来没有属性

    1.2 JSON.stringify(obj)===”{}“为true,则代表空属性

    1.3 Object.getOwnPropertyNames获取到对象中的属性名,存到一个数组中,返回数组对象.当为空时也代表属性为空。

    1.4 for in循环如果循环出来的值为空代表对象没有属性

  延申:

// 循环的对象值是属性名
var obj={a:1,b:2,c:3};
for(var prop in obj){
  console.log(prop+" "+obj[prop]); 
}
// 循环的数组值是数组下标,并且不推荐循环数组,当数组赋值了Object.prototype也会被遍历出来
var arr = ['nick','freddy','mike','james'];
for(var index in arr){    
    console.log(index +'. ' + arr[index]);
}
// 0. nick
// 1. freddy
// 2. mike
// 3. james

主要区别:for...of 用来遍历数组,不可以遍历对象;相对于forEach是可以使用break;for..of适用于无需知道索引值的数组遍历,可以中断,可以怼字符串、类数组、map和set类型数组的迭代。

   2.手写深拷贝

function deepCopy(obj){
  if(typeof obj !== 'object') return
  let newObj = Arrary.isArrary(obj) ? [] : {}
  for( let key in obj){
      if(obj.hasOwnProerty(key)){
         newObj[key] = typeof obj[key] === 'object' ? deeCopy(obj[key]) : obj[key]
      }  
    }
 return newObj }
延申:JSON.stringify()方式不推荐使用,当对象内容为undefined,null,Date,RegExp,function,error时会报错;
   hasOwnProperty是检测对象的自用属性,原型上的属性都不会检测,跨层级的属性也不会检测。
   let obj={a:b,c:{d:e} obj.prototype = f:obj.hasOwnProperty(a)//true (d)//false (f) // false

   3.防抖

 // 函数防抖是指在事件被触发 n 秒后再执行回调,如果在这 n 秒内事件又被触发,则重新计时。这可以使用在一些点击请求的事件上,避免因为用户的多次点击向后端发送多次请求

    function debounce (fn, wati) {
       let timer = null
       return function(...args) {
          let _this =  this
          if(timer) clearTimeout(timer)  // 重复点击时清空原定时器
          timer = setTimeout(function() {
          fn.apply(_this,args)    
        },wait)    
      } 
  }

  4.节流

    //函数节流是指规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。节流可以使用在 scroll 函数的事件监听上,通过事件节流来降低事件调用的频率

function throttle(fn,wait){
  let timer = undefined
  let _this = this
  return function(...args){
        if(timer !== undefined){
          return // 如果定时器存在,则直接返回。不执行原函数
        }else{
          fn.apply(_this,args)
          timer = setTimeout(function(){  //执行完原函数后,重置timer,重置期间不会再触发都会被return
             timer = undefined
            },wait)
        }
    }  
}

 

posted on 2024-02-23 15:04  ChoZ  阅读(27)  评论(0编辑  收藏  举报

导航