前言
一、javascript相关
1.js的八个基本数据类型(高频)
2.this的五种指向方式
3.Function的call,apply和bind方法的区别?
4.Promise,手写promise
5.闭包
6.原型链,作用域链与原型链的区别?
7.继承与继承的五种实现方式
8.深拷贝与浅拷贝的区别?(高频)
9.事件委托
10.var,const和let对比(高频)
11.宏任务与微任务
12.bind的实现方式
13.eventloop,事件循环(超高频)
14.new的过程,手动实现一个new方法
15.0.1+0.2!=0.3的原因
16.什么是防抖和节流?有什么区别?怎么实现
17.“==”和“= = =”的区别?
18.null和undefined的区别?
19.内存泄露和内存溢出
20.垃圾回收机制
21.怎么判断数组array和对象
//方法一
console.log(arr.constructor)//[function:Array]
console.log(obj.constructor)//[function:Object]
//方法二
console.log(Array.isArray(arr))//true
console.log(Array.isArray(obj))//false
//方法三
console.log(arr instanceof Array)//true
console.log(obj instanceof Array)//false
//方法四
console.log(Object.prototype.toString.call(arr))//[object Array]
console.log(Object.prototype.toString.call(obj))//[object Object]
//方法五
console.log(arr.__proto__)//[]
console.log(obj.__proto__)//{}