javascript高级知识

79 阅读3分钟

1. 类型

基本数据类型

  • string number boolean undefined symbol null bigint

复杂数据类型

  • object

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)

深拷贝

  • 递归
  • lodash
  • JSON

8.节流与防抖

防抖

  • 单位时间内,频繁触发事件,只执行最后一次
  • 场景 搜索框 手机号、检测
节流
  • 单位事件内,频繁触发事件,只执行一次

9.IIFE

  • 隐藏实现
  • 不会污染全局命名空间
  • 用它来编写js模块

9. 设计模式

工厂模式

10. 进程

  • 一次程序的执行,占有独立的内存空间

11.线程

  • 是进程的一个独立执行的单元
  • 是程序执行的一个完整流程
  • 是CPU的最小调度单元

相关知识

  • 应用程序必须运行在某个进程的某个线程上
  • 一个进程中至少有一个运行的线程:主线程,进程启动后自动创建
  • 一个进程中也可以同时运行多个线程,我们会说程序是多线程运行的
  • 一个进程内的数据可以供其中的多个线程直接共享
  • 多个进程之间的数据是不能直接共享的
  • 线程池:保存多个线程对象的容器,实现线程对象的反复利用

12.web workers