JavaScript监测数据类型方法全面总结

 更新时间:2023年08月25日 11:32:13   作者:loong  
这篇文章主要为大家介绍了JavaScript监测数据类型方法示例全面总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

需要检测类型

需要检测是不是 number string boolean undefined function

使用typeOf 检测

使用typeOf 检测是有局限性的 比如 数组、对象等引用类型检测出来都是Object

console.log(typeOf 123) // Number
console.log(typeOf '123') // String 
console.log(typeOf NaN) // Number
console.log(typeOf true) // Boolean
console.log(typeOf undefined) // Undefined
console.log(typeOf function(){}) // Function

console.log(typeOf null) // Object
console.log(typeOf {}) // Object
console.log(typeOf []) // Object

使用 instanceof 检测

使用 instanceof 检测 某个对象是否属于某个类的实例 但是检测 数组、对象、函数 等引用类型检测出来也是Object

console.log({}.instanceof Object) // true
console.log([].instanceof Array) // true
console.log(123.instanceof Number) // 报错

使用 construct 检测

使用 construct 检测 可以根据原型对象检测

console.log({}.construct === Object) // true
console.log([].construct === Array) // true
console.log(123.construct === Number) // 报错

目前准确的检:Object.prototype.toString.call()

console.log(Object.prototype.toString.call(123)) // [object Number]
console.log(Object.prototype.toString.call('ok')) // [object String]
console.log(Object.prototype.toString.call(true)) // [object Boolean]
console.log(Object.prototype.toString.call([]) // [object Array]
console.log(Object.prototype.toString.call({}) // [object Object]
console.log(Object.prototype.toString.call(function(){}) // [object Function]
console.log(Object.prototype.toString.call(/abc/) // [object RegExp]
console.log(Object.prototype.toString.call(null) // [object Null]
console.log(Object.prototype.toString.call(undefined) // [object Undefined]
let d= new Date()
console.log(Object.prototype.toString.call(d) // [object Date]
let s = Symbol
console.log(Object.prototype.toString.call(s) // [object Symbol]

不足

instanceof 不足:

  • 可以检测出引用类型,但是检测不出基本类型
  • 所有应用类型,都是Object的实例
  • 可以人为修改原型链,导致检测的结果不准缺

typeOf不足:

  • 可以检测出基本类型,但是检测不出引用类型,检测出来都是Object

construct不足:

  • 可以检测出引用类型,但是检测不出基本类型
  • 可以人为修改原型链,导致检测的结果不准缺

以上就是JavaScript监测数据类型方法全面总结的详细内容,更多关于JavaScript监测数据类型的资料请关注脚本之家其它相关文章!

相关文章

  • quickjs 封装 JavaScript 沙箱详情

    quickjs 封装 JavaScript 沙箱详情

    这篇文章主要介绍了 quickjs 封装 JavaScript 沙箱,在前文 JavaScript 沙箱探索 中声明了沙箱的接口,并且给出了一些简单的执行任意第三方 js 脚本的代码,但并未实现完整的 IJavaScriptShadowbox,下面便讲一下如何基于 quickjs 实现,需要的朋友可以参考一下
    2021-10-10
  • 可输入的下拉框

    可输入的下拉框

    可输入的下拉框...
    2006-06-06
  • 微信小程序实现缓存根据不同的id来进行设置和读取缓存

    微信小程序实现缓存根据不同的id来进行设置和读取缓存

    这篇文章主要介绍了微信小程序实现缓存根据不同的id来进行设置和读取缓存的相关资料,需要的朋友可以参考下
    2017-06-06
  • JavaScript执行机制详细介绍

    JavaScript执行机制详细介绍

    这篇文章主要介绍了JavaScript执行机制,想要搞懂JavaScript执行机制,便与进程与线程的概念脱不了干系,下面我们就来看看这JavaScript执行机制的具体介绍吧,需要的朋友可以参考一下
    2021-12-12
  • JavaScript前端学算法题解LeetCode最大重复子字符串

    JavaScript前端学算法题解LeetCode最大重复子字符串

    这篇文章主要为大家介绍了JavaScript前端学算法题解LeetCode最大重复子字符串,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • JavaScript原型链详解

    JavaScript原型链详解

    这篇文要给大家介绍的是JavaScript原型链,文章主要介绍内容有构造函数、属性Prototype、属性Prototype、属性__proto__、访问原型上的方法等问题,需要的朋友可以参考一下文章的详细内容
    2021-11-11
  • 微信小程序--组件(swiper)详细介绍

    微信小程序--组件(swiper)详细介绍

    这篇文章主要介绍了微信小程序--组件(swiper)详细介绍的相关资料,需要的朋友可以参考下
    2017-06-06
  • rollup打包引发对JS模块循环引用思考

    rollup打包引发对JS模块循环引用思考

    这篇文章主要为大家介绍了rollup打包引发的对JS模块循环引用的思考,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 微信小程序template模板实例详解

    微信小程序template模板实例详解

    这篇文章主要介绍了微信小程序template模板使用的相关资料,希望通过本文能帮助到大家,让大家理解掌握这样的功能,需要的朋友可以参考下
    2017-10-10
  • threeJs实现波纹扩散及光标浮动效果详解

    threeJs实现波纹扩散及光标浮动效果详解

    这篇文章主要为大家介绍了threeJs实现波纹扩散及光标浮动效果详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论