持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情
铃铛说点题外话
一句话前情回顾:JS的两种数据类型:基本数据类型(Number、String、Boolean、Null、undefined、Symbol和Bigint)和复杂数据类型(Array、function、Object、Date等等)。基本数据类型存储在栈内存,复杂数据类型存储在堆内存。可以使用typeof判断数据类型,但是只能判断除null以外的基本数据类型,堆null会判断为Object,对于复杂数据类型Array和Object都会被判断为Object
一句话介绍今天:JS对数据类型的检测
铃铛说正文
上一篇说了typeof
可以判断JS的数据类型,除了这个方法我们还有其他的方法嘛?
数据类型检测
-
typeof
这里不详细叙述了
-
instanceof
可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的prototype
instanceof
可以准确地判断复杂引用数据类型,但是不能正确判断基础数据类型;因为它的输出是Bollean类型 -
constructor
console.log((2).constructor === Number); // true
输出也是Boolean,可以判断出基本数据类型和复杂数据类型。但是他也有个缺点,如果我创建一个对象,更改它的原型,它就会判断更改的后的原型。
-
Object.prototype.toString.call()
返回当前实例所属类信息。
- 这是因为
toString()
是Object的原型方法,调用该方法会返回统一格式的字符串。对于Object类型调用这个方法就能直接返回数据类型。 - 对于其他对象,则需要调用call方法才能返回正确的信息。
- 这是因为
关于JS类型判断大概就是以上四种方法,在日常开发过程中我们比较常用的就是typeof
和instanceof
两种
跟铃铛说再见
学习的最后一步:放松
今日冷笑话:今天发廊,我问发妹子:这里洗剪吹要多少钱?妹子:最低30元!我:那洗剪呢?妹子: 25元!我:好吧,那麻烦你帮我吹一下!
放松结束,猜猜明天会说讲些什么吧