在javaScript中检测数据类型的几种方式

在用javaScript编程的过程中,我们经常会遇到这样一个问题,就是需要检测一个数据或变量的类型,那么在javaScript中给我们提供了哪些方法呢?网上流传的代码比比皆是,但是发现其中有些是有误的,索性我自己动手把每种方法用了一遍,今天我专门整理了下,以便以后查阅。

一、typeof  检测

typeof 是一个一元运算符,语法:typeof(运算数),运算数可以是任意类型。它的返回值是一个字符串,该字符串说明运算数的类型。

 1        // var arr =  { name:"john"};  // object
 2         // var arr =  ["语文","数学"]; // object
 3         // function Person() {};       // typeof(Person) => function
 4         // var arr =  ‘我是字符串‘ ;   // string
 5         // var arr =  66 ;             // number
 6         // var arr =  true  ;          // boolean
 7         // var arr =  new Person();    // object
 8         // var arr =  undefined;       // undefined
 9         // var arr =  null;            // object
10         // var arr =  /^\d{5,20}$/;    // object
11         // console.log( typeof(arr) );

二、instanceof  检测

instanceof 检测某个对象是不是另一个对象的实例,可以在继承关系中用来判断一个实例是否属于它的父类型。

1         // var arr =  ‘我是字符串‘ ;       // console.log( arr instanceof String ) => false
2         // var arr =  66 ;               // console.log( arr instanceof Number ) =>false
3         // var arr =  true  ;            // console.log( arr instanceof Boolean ) =>false
4         // var arr =  ["语文","数学"];    // console.log( arr instanceof Array ) =>true
5         // var arr =  { name:"john"};    // console.log( arr instanceof Object ) =>true
6         // var arr =  function Person(){}; //console.log(arr instanceof Function)=>true
7         // var arr =  undefined;           // console.log(arr instanceof Object)=>false
8         // var arr =  null;               // console.log(arr instanceof Object)=>false
9         // var arr =  /^\d{5,20}$/;       // console.log(arr instanceof RegExp)=>true

三、Object.prototype.toString.call  检测

使用Object.prototype上的原生toString()方法判断数据类型,使用方法如下:Object.prototype.toString.call(value)

 1          // var arr =  ‘我是字符串‘ ;     //[object String]
 2         // var arr =  66 ;               //[object Number]
 3         // var arr =  true ;             //[object Boolean]
 4         // var arr =  ["语文","数学"];   //[object Array]
 5         // var arr =  { name:"john"};    //[object Object]
 6         // var arr =  function Person(){};  //[object Function]
 7         // var arr =  undefined;            //[object Undefined]
 8         // var arr =  null;                 //[object Null]
 9         // var arr =  /^\d{5,20}$/;         //[object RegExp]
10         // console.log( Object.prototype.toString.call(arr) );

以上整理的笔记可能也有疏忽遗漏的地方,如果你有发现,记得快快给我指出来吧,促进你我共同进步,我是爱折腾、不怕麻烦的九九smile!

时间: 2024-12-18 23:13:14

在javaScript中检测数据类型的几种方式的相关文章

js中检测数据类型的几种方式

1.typeof 一元运算符,用来检测数据类型.只可以检测number,string,boolean,object,function,undefined. 对于基本数据类型是没有问题的,但是遇到引用数据类型是不起作用的(无法细分对象) let str = '{}'; let fn = function(){}; let obj = {}; let ary = []; let rg = /\d/; console.log(typeof str);//string console.log(typeo

JS中检测数据类型的几种方式及优缺点【转】

1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string"."boolean"."undefined"."object"."function" 局限性:1)typeof null ->"object"2)检测的不管是数组还是正则都返回的是"obje

JS中检测数据类型的几种方式及优缺点

1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string"."boolean"."undefined"."object"."function" 局限性:1)typeof null ->"object"2)检测的不管是数组还是正则都返回的是"obje

JavaScript中检测数组的几种方式

检测一个对象是否为数组的方式有: Array.isArray()         // true或false(es5) toString.call([]);      // [object Array] arr.constructor;      // Array() instanceof Array   // true或false 兼容性写法: if(typeof Array.isArray==="undefined"){ Array.isArray = function(arg){

javascript中定义事件的三种方式

在javascript中,可以为某个元素指定事件,指定的方式有以下三种: 1.在html中,使用onclick属性 2.在javascript中,使用onclick属性 3.在javascipt中,使用addEvenListener()方法 三种方法的比较 (1)在第二.三种方法中,可以向函数传入一个event对象,并读取其相应属性,而方法一不可以. (2)首选第二.三种,第一种不利于将内容与事件分离,也不能使用event对象的相关内容. 一些语法细节 (1)在第一种方法中,onclick大小写

javascript中实现继承的几种方式

javascript中实现继承的几种方式 1.借用构造函数实现继承 function Parent1(){ this.name = "parent1" } function Child1(){ Parent1.call(this); this.type = "child1"; } 缺点:Child1无法继承Parent1的原型对象,并没有真正的实现继承(部分继承) 2.借用原型链实现继承 function Parent2(){ this.name = "p

JavaScript中定义对象的四种方式 2012-5-10 15:19 阅读(0)

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例. 1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子: func

JavaScript中定义对象的四种方式

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例.     1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子:

检测数据类型的三种方式及区别

var a="i am string"; var b=[1,2,3]; var c=new String("abc"); //String类实例对象 //typeof: null 对象 数组 都是返回Object类型 console.log(typeof a); //string console.log(typeof b); //object console.log(typeof c); //object //instanceof无法检测是字符串,因为a只是一个一s