类型识别的几种方法

  在js中识别数据类型有四种方法

  分别是:1. typeof  2. Object.prototype.toString  3. constructor  4. instanceof

  这几种方法各有优缺点

  先说一下js中的数据类型

  js中一共有十五种类型称之为原生对象

  Undefined、Null、Number、String、Boolean、Object、Function、Array、Date、RegExp、Error、Math、JSON、全局对象、arguments

  其中:

标准类型:Undefined、Null、Number、String、Boolean、Object

构造器:Object、Number、String、Boolean、Function、Arra、Date、RegExp、Error

对象:Math、JSON、全局对象、arguments

标准内置对象:Number、String、Boolean、Object、Function、Array、Date、RegExp、Error、Math、JSON、全局对象

  一 typeof:能识标准类型(Null除外),能识别引用类型(Function除外)

 1     alert(typeof ‘abc‘);    //string
 2     alert(typeof 12);       //number
 3     alert(typeof true);     //boolean
 4     alert(typeof undefined);    //undefined
 5     alert(typeof null);         //object
 6     alert(typeof { name: 1});   //object
 7     alert(typeof function(){}); //function
 8     alert(typeof []);           //object
 9     alert(typeof new Date);     //object
10     alert(typeof /\d/);         //object
11     function Parent(){}        //自定义对象
12     alert(typeof new Parent);   //object

  二 Object.prototype.toString:能识别标准类型及内置对象类型但不能识别自定义类型

   function type(obj){      //封装Object.prototype.toString
       return Object.prototype.toString.call(obj).slice(8,-1).toLowerCase();
   }
   alert(type(‘abc‘));      //string
   alert(type(123));        //number
   alert(type(true));       //boolean
   alert(type(undefined));  //undefined
   alert(type(null));       //null
   alert(type({name:1}));   //object
   alert(type(function(){}));   //function
   alert(type([]));             //array
   alert(type(new Date));       //date
   alert(type(/\d/));           //regexp
   function Parent(){}
   alert(type(new Parent));     //object

   三 constructor:识别标准类型(Undefined\Null除外)、识别内置对象类型、识别自定义对象类型

//    判断原始类型
   console.log(‘abc‘.constructor === String);   //true
   console.log((123).constructor === Number);   //true
   console.log(true.constructor === Boolean);   //true
   console.log({name:1}.constructor === Object);//true
//    判断内置对象类型
   console.log([].constructor === Array);       //true
//    判断自定义对象(构造函数)
   function Parent(name){
       this.name = name;
   }
   console.log(new Parent(‘二珂‘).constructor === Parent);  //true

  四 instanceof:判别内置对象类型、不能判别原始类型、判别自定义对象类型和父子类型

// 能够判别内置对象类型
   console.log([] instanceof Array);        //true
   console.log(/\d/ instanceof RegExp);     //true
// 不能判别原始对象类型
   console.log((123) instanceof Number);    //false
   console.log(‘爱你呦‘ instanceof String); //false
   console.log( true instanceof Boolean);   //false
// 能够判别自定义对象类型和父子类型
function Point(x,y){
    this.x = x;
    this.y = y;
}
function Circle(x,y,r){
    Point.call(this,x,y);       //将Point的作用域借给Circle使用
    this.radius = r;
}
Circle.prototype = new Point();     //Circle是Point的子对象
Circle.prototype.constructor = Circle;
var c = new Circle(1, 1, 2);
console.log(c instanceof Circle);       //true
console.log(c instanceof Point);        //true

 五 jQuery中的 $.type()方法;

 

原文地址:https://www.cnblogs.com/tanhuidong/p/9103812.html

时间: 2024-12-19 09:10:04

类型识别的几种方法的相关文章

Jackson 处理复杂类型(List,map)两种方法

方法一: String jsonString="[{'id':'1'},{'id':'2'}]"; ObjectMapper mapper = new ObjectMapper(); JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, Bean.class); //如果是Map类型 mapper.getTypeFactory().constructParametricType(H

java类型枚举的几种方法

常量定义通常有数据库表.配置文件.JAVA静态常量和枚举类中 1.数据库表方式 create table t_USER ( PK_ID NUMBER(10) not null, SEX VARCHAR2(255) check (SEX in(0,1)), USERNAME VARCHAR2(255) ) 其中sex字段就限制了字段取值只能是0和1.这里假定0代表男 1代表女 2.配置文件 user_Type_man=0 user_type_women=1 JAVA静态变量 User类中定义 pu

javascript四种类型识别的方法

× 目录 [1]typeof [2]instanceof [3]constructor[4]toString 前面的话 javascript有复杂的类型系统,类型识别则是基本的功能.javascript总共提供了四种类型识别的方法,本文将对这四种方法进行详细说明 typeof运算符 typeof是一元运算符,放在单个操作数的前面,返回值为表示操作数类型的首字母小写的字符串 [注意]typeof运算符后面带不带圆括号都可以 console.log(typeof 'a');//'string' co

js中类型识别的方法

第一种方法typeof typeof是一种运算符,它的值有以下几种 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ces</title> </head> <body> <script> console.log(typeof "Liesbeth");

JS的四种类型识别方式

前言 JS中包含丰富的类型系统,在使用过程中,类型识别是重要的一环.JS提供了4种通用的类型检测的方法 [typeof][instanceof][constructor][Object.prototype.toString] [typeof] [识别] 1.能够识别基本数据类型(Null会被识别成'object') 2.不能识别具体的引用类型(Function除外) console.log(typeof "jerry");//"string" console.log

java对象转换String类型的三种方法

在很多情况下我们都需要将一个对象转换为String类型.一般来说有三种方法可以实现:Object.toString().(String)Object.String.valueOf(Object).下面对这三种方法一一分析 一.采用Object.toString()toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法.这是采用该种方法时,常派生类会覆盖Object里的t

C# web api 返回类型设置为json的两种方法

每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心! 悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的

C# web api返回类型设置为json的两种方法

web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Application_Start()方法中添加一句: 代码如下: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 修改后: 代码如下: protected void Applicati

iOS获取网络类型的四种方法

Reachability类只能区分WIFI和WWAN类型,却无法区分2G网和3G网. 网上也有些方法,却都存在Bug. 经过网上查找资料和测试,基本上总结了以下几种方法: 1.使用导航栏的方式:(私有API) 代码: typedef enum { NetWorkType_None = 0, NetWorkType_WIFI, NetWorkType_2G, NetWorkType_3G, } NetWorkType; UIApplication *application = [UIApplica