📋 个人简介
- 💖 作者简介:大家好,我是小娜😜
- 📝 个人主页:呐納蒳🔥
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
- 📣 系列专栏:web开发🍁
- 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥
🍒前言:
今天介绍一下JavaScript的数据类型以及监测数据类型的方法,大家一起成长,如有补充,十分欢迎。
🍊js中的基本数据类型:
- 简单数据类型
String (字符型) Number(数字型) Boolean (布尔型) 空(Null)、未定义(Undefined) 还有Es6新添加的
Symbol(表示独一无二的值)、BigInt(任意精度整数)
- 引用数据类型
对象(Object)、数组(Array)、函数(Function)。(Array、function也属于对象)
🍊js中检测数据类型的方法:
- typeof 检测一些基本的数据类型
语法:typeof 后面加不加括号都是可以用的
注意:正则、{}、[]、null输出结果为object缺点:只能检测基本的数据类型
console.log(typeof (1));
console.log(typeof '1');
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof null);
console.log(typeof []);
console.log(typeof {});
console.log(typeof Array);
console.log(typeof Object);
console.log(typeof Symbol);
console.log(typeof BigInt);
- A instanceof B检测当前实例是否属于某各类
双目运算符 a instanceof b ,判断a的构造器是否为b,返回值为布尔值
缺点:只能检测引用类型和构造函数创建的基本值
console.log(1 instanceof Number);
console.log('a' instanceof String);
console.log(true instanceof Boolean);
console.log([] instanceof Array);
console.log({} instanceof Object);
function b() {};
console.log(b instanceof Object);
let a = new b
console.log(a instanceof b);
console.log(undefined instanceof Undefined);
console.log(null instanceof Null);
- constructor构造函数
语法:实例.constructor
对象的原型链下(构造函数的原型下)有一个属性,叫constructor
缺点:**constructor并不可靠,容易被修改(只有参考价值)。即使被修改了,也不会影响代码的正常运行。正常开发的时候,constructor不小心被修改了,为了方便维护,和开发,可以手动更正constructor的指向。
function a() {}
let a = new b;
console.log(a.constructor.name);//a
console.log(b.constructor);//Function(){}
console.log(Function.constructor);//Function(){}
- Object.portotype.toString (最好的)
语法:Object.prototype.toString.call([value])
获取Object.portotype上的toString方法,让方法的this变为需要检测的数据类型值,并且让这个方法执行在Number、String、Boolean、Array、Function、RegExp…这些类的原型上都有一个toString方法:这个方法就是把本身的值转化为字符串
缺点:只能检测js的内置类 不能检测自定义类
Object.prototype.toString.call(12)//[boject Number]
Object.prototype.toString.call(true)//[boject Boolean]