JavaScript数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
1.typeof ---直接返回数据类型
console.log( typeof 1 ); //number
console.log( typeof true ); //boolean
console.log( typeof '1' ); //string
console.log( typeof [] ); //object
console.log( typeof {} ); //object
console.log( typeof function(){} ); //function
console.log( typeof Date ); //function
console.log( typeof null ); //object
console.log( typeof undefined ); //undefined
console.log( typeof NaN); //number
缺点:不能准确判断数据类型;
2.instanceof ---用来判断一个对象是否是对象类型的实例,返回true/false
console.log( 1 instanceof Number ); //false
console.log( "1" instanceof String ); //false
console.log( true instanceof Boolean ); //false
console.log( [] instanceof Object ); //true
console.log( [] instanceof Array ); //true
console.log( {} instanceof Object ); //true
console.log( function(){} instanceof Function ); //true
console.log( Date instanceof Function ); //true
console.log( null instanceof Object ); //false
console.log( undefined instanceof Object ); //false
// instanceof用来判断一个对象是否是对象类型的实例,所以判断1,“1”,true等值时返回false
console.log( new Number(1) instanceof Number );
console.log( new String("1") instanceof String );
console.log( new Boolean(true) instanceof Boolean ); //实例化之后返回true
3.constructor --- 判断一个对象是否是对象类型的实例
不能用于undefined 与 null 因为它们没有构造函数
const num = new Number(2);
num.constructor === Number; // true
注:一般使用instanceof来判断对象是否属于某个类的实例,而不是constructor
instanceof不但可以判断出是直接类的实例(通过new的方式),还可以判断是否是父类的实例;而constructor属性只可以判断出是否是直接类的实例。
function Person(name,age){
this.name = name;
this.age = age;
}
var student = new Person("xiaoming", 18);
// instanceof
console.log(student instanceof Person); //true
console.log(student instanceof Object); //true
// constructor
console.log(student .constructor == Person); //true
console.log(student .constructor == Object); //false
4.Object.prototype.toString.call()
console.log( Object.prototype.toString.call(1) ); // [object Number]
console.log( Object.prototype.toString.call("1") ); // [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(Date) ); // [object Function]
console.log( Object.prototype.toString.call(function(){}) ); // [object Function]
console.log( Object.prototype.toString.call(null) ); // [object null]
console.log( Object.prototype.toString.call(undefined) ); // [object undefined]
可以准确判断数据类型