📄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