1. 类型
基本数据类型
- string number boolean undefined symbol null bigint
复杂数据类型
2. 闭包
定义
作用
- 封闭数据,实现数据私有化,外部也可以访问函数内部的变量
- 允许函数与其所操作的某些数据关联起来
问题
3.变量提升
- 把所有var声明的变量提升到当前作用域的最前面
- 只提升声明,不提升赋值
4.函数提升
- 会把函数声明提升到作用域的最前面
- 只提升声明,不提升调用
- 函数表达式必须先声明和赋值,后调用
- 先执行变量提升,再执行函数提升
5.this指向
- 箭头函数的this指向的是上一层作用域的this指向
- 普通函数的this指向是谁调用,就是指向谁
- call 调用函数 ,改变this指向
- apply 调用函数,改变this指向,传递的值是数组
- bind 不会调用函数。改变this指向,返回由指定this和初始化参数改造的原函数拷贝
6.构造函数
原型(原型对象)
- 每一个构造函数身上都有
prototype属性,指向的就原型对象,也就是原型,也叫显示原型
- 原型对象中有
constructor属性,指向原型对象的构造函数
- 原型对象中有
__proto__属性,指向上一级构造函数的原型对象prototype
对象原型
- 实例对象都会有一个属性
__proto__属性,也称为隐式原型
- 指向构造函数的原型对象
prototype
__proto__也有constructor属性,指向的是创建该实例对象的构造函数
原型继承-原型对象实现继承
组合继承
原型链
- 函数的显示原型指向的对象默认是空Object实例对象(但Object不满足)
- 所有函数都是Function的实例(包含Function)-
Function.__proto__===Function.prototype
- Object的原型对象是原型链的尽头-
Object.prototype.__proto__为null
- n
7.拷贝
浅拷贝
const o ={...obj}
const o={}
Object.assign(o,obj)
深拷贝
8.节流与防抖
防抖
- 单位时间内,频繁触发事件,只执行最后一次
- 场景 搜索框 手机号、检测
节流
9.IIFE
- 隐藏实现
- 不会污染全局命名空间
- 用它来编写js模块
9. 设计模式
工厂模式
10. 进程
11.线程
- 是进程的一个独立执行的单元
- 是程序执行的一个完整流程
- 是CPU的最小调度单元
相关知识
- 应用程序必须运行在某个进程的某个线程上
- 一个进程中至少有一个运行的线程:主线程,进程启动后自动创建
- 一个进程中也可以同时运行多个线程,我们会说程序是多线程运行的
- 一个进程内的数据可以供其中的多个线程直接共享
- 多个进程之间的数据是不能直接共享的
- 线程池:保存多个线程对象的容器,实现线程对象的反复利用
12.web workers