打卡第一天之js数据类型

51 阅读1分钟

1、有哪些数据类型

共八种数据类型,Number、String、Null、Undefined、Boolean、Symbol、Object、Biglnt

symbol和Biglnt是es6新增的数据类型: symbol代表独一无二不可变的类型,Biglint是一种数据类型的数据

2、栈和堆的区别

  • 原始数据都存储在栈里面,占据空间大小,大小固定,栈中数据的存取方式先进后出
  • 引用数据类型存储在堆里面,占据空间大小,大小不固定,堆是一个优先队列

3、数据类型判断方式

typeof

image.png

instanceof

instanceof 只能判断引用数据类型,不能判断基本数据类型,可以用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性

image.png

constructor

image.png

constructor有两个作用,一判断数据类型,二是对象实例通过constructor对象访问它的构造函数, 需要注意,如果创建一个对象来改变它的原型,constructor就不能用来判断数据类型了

Object.prototype.toString.call()

image.png

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