1、有哪些数据类型
共八种数据类型,Number、String、Null、Undefined、Boolean、Symbol、Object、Biglnt
symbol和Biglnt是es6新增的数据类型: symbol代表独一无二不可变的类型,Biglint是一种数据类型的数据
2、栈和堆的区别
- 原始数据都存储在栈里面,占据空间大小,大小固定,栈中数据的存取方式先进后出
- 引用数据类型存储在堆里面,占据空间大小,大小不固定,堆是一个优先队列
3、数据类型判断方式
typeof
instanceof
instanceof 只能判断引用数据类型,不能判断基本数据类型,可以用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性
constructor
constructor有两个作用,一判断数据类型,二是对象实例通过constructor对象访问它的构造函数,
需要注意,如果创建一个对象来改变它的原型,constructor就不能用来判断数据类型了
Object.prototype.toString.call()
4、判断数组的方式有哪些
- Object.prototype.toString.call()做判断 Object.prototype.toString.call(obj).slice(8,-1) === 'Array';
- 原型链判断obj.proto === Array.prototype;
- ES6的Array.isArray()做判断
- instanceof做判断
- Array.prototype.isPrototypeOf