返回的数据类型,包含 number、boolean、symbol、string、object、undefined、function这几种。
由此可以看出typeof没有办法得到引用类型的具体类型。
代码:
typeof 666 输出 number
typeof null 输出 object
typeof {} 输出 object
typeof [] 输出 object
typeof (function(){}) 输出 function
typeof undefined 输出 undefined
typeof '666' 输出 string
typeof true 输出 boolean
比如像数组、日期、正则 typeof只会返回处于其原型链最顶端的Object类型。只有function列外可以得到确切的类型。
二、instanceof
判断一直对象类型的方法 instanceof 后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
var aa = [1,2,3];
var bb = new Date();
var cc = function(){alert(111);};
var dd = function(){this.name="22";};
console.log(aa instanceof Array) //true
console.log(bb instanceof Date) //true
console.log(cc instanceof Function) //true
// console.log(dd instanceof function ) //false
三、constructor
根据对象的constructor判断,返回对创建此对象的数组函数的引用。
var c= [1,2,3];
var d = new Date();
var e = function(){alert(111);};
alert(c.constructor === Array) //true
alert(d.constructor === Date) //true
alert(e.constructor === Function) //true
//注意: constructor 在类继承时会出错
四、Object.prototype.toString.call()
所有数据类型均可判断(推荐)
这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。
Object.prototype.toString.call('') ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。