📄Javascript基础

type
status
date
slug
summary
tags
category
icon
password
Status
  • 七个基本类型:String Number Boolean BigInt undefined null Symbol
  • 引用类型:Function Array Object (…)
  • typeof 除了 null 是 object 能够识别其他基本类型
  • instanceof 原理是通过原型链来判断类型,因此只能判断引用类型(但存在原型链上存在对应 prototype 就判为 true 的缺陷),对基本类型值无效
  • this 的绑定优先级:new -> bind/apply -> obj.func() -> func()
  • bind 只有在第一次的时候绑定的 this 有效
  • 箭头函数没有自己的 this 需要依赖父作用域中的 this
  • 深拷贝方法:
    • JSON.parse(JSON.stringify())
    • MessageChannel
    • 自己写一个
  • JSON.parse(JSON.stringify())深拷贝的问题:
    • 会忽略 undefined、function、Symbol
    • 对象内部有循环引用、BigInt会报错
    • RegExp、Error、Map等引用类型解析为一个空对象,Date变成了字符串
  • MessageChannel 深拷贝问题:可以正确复制 undefined、BigInt等引用类型以及循环引用,但是函数和 Symbol 属性还是会报错
  • MessageChannel 实现的深拷贝:
  • 手写一个简单的深拷贝:
  • 终极版本深拷贝
测试用例:

闭包

定义
一个函数返回一个内部函数,这个函数引用了外部变量。
用处
  • 私有变量
  • 单例模式
  • 柯里化(bind)
解决泄露
引用指向null
常见泄露
  • 无意识的全局变量(var)
  • 移除DOM时不销毁监听
  • 滥用闭包
排查
devtools Performance查看性能指标,Memory查看内存对象具体情况。
 
  • Twikoo

© 2021-2024 Tabing | 萌ICP备20240819号