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

时间: 2024-08-08 06:57:01

js检测对象的类型的相关文章

js判断对象的类型

开发中,不免需要对对象类型进行判断,列举下常见的判断方法: 1.typeof:对于function string number undifined boolean object都有效,注意返回值是字符串. 但null.Array检测出Object. 2.instanceof: 用于检测对象是否是特定类的一个实例,返回值是布尔值,最好和typeof配合使用(typeof值为Object时候用instanceof进行进一步判定).继承链上也可以用于判断是否继承了某对象. 3.对象.construct

用Object.prototype.toString()来检测对象的类型

昨天遇到要检测数据类型的情况,一般可以用typeof,但只能区分基本类型,即 "number","string","undefined","boolean","object" 五种. 对于数组.函数.对象来说,其关系错综复杂,使用 typeof 都会统一返回 "object" 字符串. 不过还有种方法貌似逼格有点高,那就是Object.prototype.toString(). 具体如下

js中对象的类型

js中的类型分为三种,"内部对象"."宿主对象"."自定义对象" 1."内部对象"有Date.Function.Array.Regexp.Number.Object.String.Math.Global.Boolean, 还有各种错误类对象,包括Error.EvalError.RangeError.ReferenceError.SyntaxError和TypeError. "Global"."Ma

js辨别对象的类型

本文主要针对 Null,ExpReg,Array,Date这一些typeof函数辨别不了的对象: 顺便贴上一篇关于typeof的理解:http://www.cnblogs.com/chaky/p/7284163.html 首先,辨别对象类型的方法: 1.instanceof(是否...的实例)  返回true or false 我们可以用它来辨别 ExpReg Array Date类型的对象  不适用于null 2.constructor //原型对象里的构造器指向: 不支持null识别  这里

js检测对象中是否存在某个属性

1.使用in关键字.该方法可以判断对象的自有属性和继承来的属性是否存在. 2.使用对象的hasOwnProperty()方法.该方法只能判断自有属性是否存在,对于继承属性会返回false. 3.用undefined判断.自有属性和继承属性均可判断,如果属性的值就是undefined的话,该方法不能返回想要的结果. 4.在条件语句中直接判断.如果x是undefine,null,false," ",0或NaN,它将保持不变

js面向对象编程:如何检测对象类型

在js中检测对象类型主要有三种,typeof,instanceof,constructor,这几种都可以检测对象的类型,但又有一定的区别.   1使用typeof检测对象类型. typeo作为最常用的检测类型的方法,返回字符串类型,具体使用如下: function testType(value) { var str=typeof(value); // alert(str); switch(str) { case 'undefined': // undefined类型 case 'object'

js:对象的创建(为prototype做铺垫)

/** *在js中并不存在类,所以可以直接通过Object来创建对象,但是使用这种方式创建有一 *弊端:由于没有类的约束,无法实现对象的重复利用,并且没有一种规范约定,在操作时容易带来问题. */ var person = new Object(); person.name = "octopus"; person.age = 25; person.say = function(){ alert(this.name+","+this.age); } json:json

怎样判断js对象的类型

在编写js程序的过程中,可能常常需要判断一个对象的类型,例如你写了一个函数,需要通过判断不同的参数类型来编写不同的代码. 首先可能会想到typeof操作符,看下面的这个例子: <script type="text/javascript"> var object = {}; var b = true; alert(typeof object + " " + typeof b); </script> 得到的结果如下: 从上面的结果可以看到,用ty

用Object.prototype.toString.call(obj)检测对象类型原因分析

用Object.prototype.toString.call(obj)检测对象类型原因分析 更新时间:2018年10月11日 08:46:33   投稿:laozhang    我要评论 在本篇文章里我们给大家剖析了用Object.prototype.toString.call(obj)检测对象类型的原因,需要的朋友们可以学习下. 这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是 object,Array 的结果也是 object,有时候