还是要保持每日学习啊(三)

知识点(一)instanceof 不能判断字面量

instanceof 、 typeof 的o都是小写哦。

// 123叫字面量,没有变量指定给它
console.log(123 instanceof Number) // false

易忘点

  • instanceof 、 typeof 的o都是小写哦。
  • typeof 也能输出 ‘function’ 和 ‘symbol’ 哦。
  • Object的原型是null,它的构造函数是Object()。
  • typeof 和 Object的toString方法输出的首字母都是小写的,后面有空格的单词(toString)就大写
    比如 [object Undefined])
  • 箭头函数不是没有arguments、this什么的,要准确使用限定词,它没有自己的arguments、this

知识点(二)深浅拷贝

浅拷贝

  • Object.assign({}, obj)相同的属性名会被覆盖
  • 或者直接for in进行赋值也行
let res = Array.isArray(obj) ? [] : {};
for(let key in obj){
	res[key] = obj[key]
}

深拷贝

  • JSON.parse(JSON.stringfy())
  • 递归写法
function gura(obj){
  if(typeof obj === 'object'){
      let res = Array.isArray(obj);
      for(let key in obj){
          res[key] = gura(obj[key])
      }
      return res;
  } else {
      return obj;
  }
}
  • 改进递归写法,使用数据字典,用map
  • 但是用map又是强引用,刁钻一点的说这不行,内存泄露,行,那就weakMap,弱引用的。

知识点(三)console.log(0.1)为什么就对了

consolelog会二进制转十进制再转字符串,转换过程中发生了取近似值,所以变了。

知识点(四)js是单线程,为什么能执行异步任务

因为js通常在浏览器中运行,浏览器是多线程的,不仅仅是异步请求,包括事件监听、计时器都是交给WebAPI运行的。
浏览器有以下常驻线程:

  • 渲染引擎线程
  • js引擎线程
  • 事件触发线程
  • 定时触发器线程
  • 异步http请求线程
    顺便提一嘴,为什么js不设置成多线程的,因为设置成多线程的话,一个线程要修改DOM,另一个线程要伤处这个DOM,浏览器就不知所措了。

知识点(五)V8的垃圾回收机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值