JavaScript判断数据类型的方法
本文将介绍在JavaScript中几种判断数据类型的方法。
1. typeof
用typeof对基本数据类型进行判断
typeof 1 // 'number' typeof '1' // 'string' typeof undefined // 'undefined' typeof true // 'boolean' typeof null //返回类型错误,返回Object
用typeof对复杂数据类型进行判断
typeof [] // 'object' typeof {} // 'object' typeof console.log // 'function'
除了函数,typeof对复杂数据类型都会返回一个对象,不能准确判断变量是什么类型。
2. instanceof
语法格式为:A instanceof B,如果A是B的实例,则返回true,否则返回false
var str = 'Hello World' str instanceof String //false var str1 = new String('Hello world') str1 instanceof String //true
instanceof操作符判断str1对象的原型链上是否有String这个构造函数的prototype属性,判断str1是否是String构造函数的实例对象,最后返回布尔值,这个判断对整个原型链上的对象都是有效。因此,instanceof只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。
3. constructor
实例对象都有constructor属性,当函数被定义时,JS引擎会为函数添加原型prototype,这个prototype中的constructor属性会指向函数引用,因此,重写prototype会丢失原来的constructor。
'Hello World'.constructor == String //true [].constructor == Array //true new Date().constructor == Date //true
但是,null和undefined没有constructor属性,用本方法无法判断数据类型。其次,如果自定义对象,开发者重写prototype之后,原有的constructor会丢失,因此,为了规范开发,在重写对象原型是一般都需要重新给constructor赋值,以保证对象实例的类型不被篡改。
4. toString
Object有一个原型方法toString(),该方法的返回值是当前对象的class。这是一个内部属性,格式为[Object 对象类型]。对于Object对象,直接调用本方法就能返回[Object Object],对于其他对象,要通过call/apply才能返回正确的数据类型。
Object.prototype.toString.call('') ; // [object String] Object.prototype.toString.call(1) ; // [object Number] Object.prototype.toString.call(true) ; // [object Boolean] let str = 'Hello World' Object.prototype.toString(str); // [object Object]
总的来说,toString是最能准确判断数据类型的方法。
本文有部分解释转载于网络。点击查看原文
- JavaScript数据类型及判断方法和存储区别
- javascript中判断对象数据类型的方法
- javascript各种数据类型判断方法
- JavaScript之如何判断数据类型的几种方法
- JavaScript中判断数据类型的方法总结
- JavaScript中判断数据类型的四种方法
- JavaScript数据类型判断--使用toString方法
- javascript两个数组合并及判断数据类型的方法
- JavaScript中判断数据类型的几种方法
- 关于JavaScript的变量的数据类型的判断方法
- javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性
- 温故而知新:javascript高级第一天:判断数据类型的方法
- JavaScript数据类型及判断方法
- 关于JavaScript的变量的数据类型的判断方法
- JavaScript 数据类型判断
- jQuery javaScript js 判断浏览器的类型、版本的方法
- JavaScript中对象类型判断的几种方法
- JavaScript各变量类型的判断方法
- [前端] 比typeof()方法判断数据类型更精确(升级版)
- Flex判断数据类型的几种方法