JavaScript
类型
- 声明对象
- object:
1
2let person = new Object()
let person = {} - Array:
1
2let arr = new Array()
let arr = {}
- object:
检测类型
基础数据类型
- undefined,null,boolean,number,string,symbol
引用数据类型
- object
typeof
- “undefined”
- “boolean”
- “string”
- “number”
- “object” 对象或者 null
- “function”
引用类型
- instanceof
检测数组
- Array.isArray()
检测类型
1
2Object.prototype.toString.call()
实现重载
1 | function addMethod(obj,name,func){ |
数组操作
- push() 推入数组末尾
- pop() 从数组末尾取出
- unshift() 数组前端添加
- shift() 数组前端取出
栈操作
- push() 推入 pop()取出
队列操作
- push() 推入 shift()取出
操作数组
- slice(a,b) 返回 a-b 之间的值,含 a 不含 b
- splice(a,b,…) 删除 a 开始,b 个值,包含 a. 再插入…
EventLoop
event loop 主要为三个部分,主线程,宏队列,微队列。
宏队列:settimeout/setImmediate、I/O、UI rendering。
微队列:promise.then、process.nextTick
执行顺序
先执行主线程
遇到宏队列(macrotask)放到宏队列(macrotask)
遇到微队列(microtask)放到微队列(microtask)
主线程执行完毕
执行微队列(microtask),微队列(microtask)执行完毕
执行一次宏队列(macrotask)中的一个任务,执行完毕
执行微队列(microtask),执行完毕
依次循环
1 | console.log(1) |
call() bind() apply()
1 | let C = { |