js检测对象的类型

在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)这个方式就好。

原文地址:https://www.cnblogs.com/wql025/p/4979606.html