在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法.
示例:
var array=[1,2,3];Object.prototype.toString.call(array) ;//"[object Array]"var obj={name:'Tom'};Object.prototype.toString.call(obj) ;//"[object Object]"var string='hi';Object.prototype.toString.call(string) ;//"[object String]"var num=1;Object.prototype.toString.call(num);//"[object Number]"
当然,还有其他方式,不过麻烦了一些。
如typeof,但typeof是测不出被检测的对象是Object(对象)还是Array(数组),因为Object包含了Array,如:
var array=[1,2,3];var obj={name:'Tom'};typeof array;//"object"typeof obj;//"object"
可以看到返回的都是"object"。
用instanceof可以像 Object.prototype.toString一样准确地检测js类型。如:
var o=[]; alert(o instanceof Array);//true alert(o instanceof Object);//true var f=function(){} alert(f instanceof Function);//true alert(f instanceof Object);//true
小结:有简单的就用简单直接的,所以用Object.prototype.toString.call(obj)这个方式就好。