转载声明:文章来源:https://blog.csdn.net/Rick_and_mode/article/details/108600279
数据类型判断
我们常见的数据类型有两种
基本数据类型和引用数据类型
基本数据类型
1.Number
2.String
3.Null
4.Boolean
5.undefined
6.Symbol(ES6新增)
引用数据类型
1.Object
2.Array
3.Date
4.Function
5.Error
6.RegExp
7.Math
8.Number
9.String
10.Boolean
11.Globle
通常判断数据的方法有四种
typeof
instanceof
constructor
Object.prototype.toString.call()
我们先来说
1、typeof
可以判断基本数据类型,它返回的数据类型的字符串
(返回结果只能包括 number,boolean,string,function,object,undefined)
但不能判断null、array,可以使用typeof判断变量是否存在(如if(typeof a!=“undefined”){…});但是对于一些创建的对象,它们都会返回’object’
简单的例子
console.log(typeof a); //'undefined'
console.log(typeof (true)); //'boolean'
console.log(typeof '123'); //'string'
2、Instanceof
判断引用数据类型的 用来测试一个对象在原型链中是否存在一个构造函数prototype 属性,但它不能检测null 和 undefined (Instanceof 不是一个函数,是一个操作符)
用来判断A是否为B的实例,A instanceof B, 返回 boolean 值。
instanceof 检测的是原型
代码实现:
function Student() {
}
var a = new Student()
console.log(a instanceof Student) //返回true
3、constructor
除了undefined和null之外,其他类型都可以通过constructor属性来判断类型,似乎完全可以应对基本数据类型和引用数据类型, 但如果声明了一个构造函数,并且把他的原型指向改变了,这种情况下,constructor 就不行。
代码实现:
var str = ""
console.log(str.constructor) //输出结果String
4、Object.prototype.toString.call()
代码实现
var date = newDate();
Object.prototype.toString.call(date); // "[object Date]"
Object.prototype.toString.call(true);// "[object Boolean]"
判断某个对象值属于哪种内置类型。不能准确判断一个实例是否属于某种类型
实现:返回对象的类型字符串,可以用来判断一个值的类型
原理:由于实例对象可能会自定义toString方法,覆盖掉Object.prototype.toString方法,所以为了得到类型字符串,最好直接使用Object.prototype.toString方法。通过函数的call方法,可以在任意值上调用这个方法,帮助我们判断这个值的类型。
帖子还没人回复快来抢沙发