类型判断在 web 开发中有非常广泛的应用,简单的有判断数字还是字符串,进阶一点的有判断数组还是对象,再进阶一点的有判断日期、正则、错误类型,再再进阶一点还有比如判断 plainObject、空对象、Window 对象等等。

以上都会讲,今天是上半场。

typeof

我们最最常用的莫过于 typeof,注意,尽管我们会看到诸如:

console.log(typeof('yayu')) // string

的写法,但是 typeof 可是一个正宗的运算符,就跟加减乘除一样!这就能解释为什么下面这种写法也是可行的:

console.log(typeof 'yayu') // string

引用《JavaScript权威指南》中对 typeof 的介绍:

typeof 是一元操作符,放在其单个操作数的前面,操作数可以是任意类型。返回值为表示操作数类型的一个字符串。

那我们都知道,在 ES6 前,JavaScript 共六种数据类型,分别是:

Undefined、Null、Boolean、Number、String、Object

然而当我们使用 typeof 对这些数据类型的值进行操作的时候,返回的结果却不是一一对应,分别是:

undefined、object、boolean、number、string、object

注意以上都是小写的字符串。Null 和 Object 类型都返回了 object 字符串。

尽管不能一一对应,但是 typeof 却能检测出函数类型:

function a() {}console.log(typeof a); // function

所以 typeof 能检测出六种类型的值,但是,除此之外 Object 下还有很多细分的类型呐,如 Array、Function、Date、RegExp、Error 等。

如果用 typeof 去检测这些类型,举个例子:

var date = new Date();var error = new Error();console.log(typeof date); // objectconsole.log(typeof error); // object

返回的都是 object 呐,这可怎么区分~ 所以有没有更好的方法呢?

Object.prototype.toString

是的,当然有!这就是 Object.prototype.toString!

那 Object.protototype.toString 究竟是一个什么样的方法呢?

为了更加细致的讲解这个函数,让我先献上 ES5 规范地址:https://es5.github.io/#x15.2.4.2。

在第 15.2.4.2 节讲的就是 Object.prototype.toString(),为了不误导大家,我先奉上英文版:

When the toString method is called, the following steps are taken:

  • If the this value is undefined, return "[object Undefined]".
  • If the this value is null, return "[object Null]".
  • Let O be the result of calling ToObject passing the this value as the argument.
  • Let class be the value of the [[Class]] internal property of O.
  • Return the String value that is the result of concatenating the three Strings "[object

object转date类型_js-最常用的类型判断相关推荐

  1. json同一个参数不同类型_js基础之变量类型

    1.JS 的数据类型分类 根据 JavaScript 中的变量类型传递方式,分为基本数据类型和引用数据类型.其中基本数据类型包括Undefined.Null.Boolean.Number.String ...

  2. Api - 应用程序接口、常用类、 方法(Object、Date、Calendar、DateFormat、String、StringBuilder、包装类)

    Object 所有类的父类 Class getClass() 通过对象的该方法,可以获得对象对应的类的字节码对象 Object clone() - 克隆.赋值 调用方法的对象, 需要类实现Clonea ...

  3. Java学习 day12 (常用API2)Object、Date、DateFormat、Calendar、System、StringBuilder、包装类

    前言: 在java中,API是指一些预先定义的函数,直接导入API就可以快速使用已经编写好的代码和与之对应的功能,之前我们也进行了一些常用API的学习,比如String类.Arrays类.Math类, ...

  4. boolean类型_JS核心理论之《数据类型、类型转换、深浅拷贝与参数传递》

    数据类型 基本类型:共7种,也被称为值类型,是一种既非对象也无方法的数据.包括:string.number.bigint.boolean.null.undefined.symbol. 除了 null ...

  5. flask框架创建数据库定义字段类型和字段常用参数

    1.字段类型 Integer int整型,普通整数,一般是32位 SmallInteger int 取值范围最小的整型,一般是16位 Big Integer int或long 不限制精度的整数 Flo ...

  6. sqlite bool mysql_MySQL/SQLite-数据库常用字段类型使用

    本文分两部分: 第一部分:MySQL 常用数据字段类型介绍 第二部分:SQLite 常用数据字段类型介绍 永远不要在背后批评别人,尤其不能批评你的老板无知.刻薄和无能.(因为这样的心态,会使你走上坎坷 ...

  7. JAVA学习3-抽象类、内部类、数组、Object、System、String、基本包装类型

    21.类之间的关系 is a:继承关系 has a : 关联关系,通常以属性的形式存在 like a:实现关系,通常是类与接口的关系; 22.抽象类与接口的区别 抽象类是半抽象的,接口是完全抽象的: ...

  8. Day2 QT常用基础类型(自用)

    1. 基础类型 因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型. QT基本数据类型定 ...

  9. mysql数据库中常用的类型_MySQL数据库中常用字段类型

    MySQL数据库中常用字段类型 整数型:TINYINT,SMALLINT,INT,BIGINT 小数型:FLOAT,DOUBLE,DECIMAL(M,D) 字符型:CHAR,VARCHAR 日期型:D ...

  10. Odoo二次开发------Odoo常用字段类型

    版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处. 大家好.本篇文章主要讲述的内容是Odoo常用字段类型. 本文将从Odoo模型概述.Odoo的常规字段.自动字段和保留字段.常用字段属性. ...

最新文章

  1. java多态的应用场景_Java培训SE基础之多态的应用场景
  2. B2C(ecstore) 商城lnmp环境配置
  3. jquery源码之低调的回调函数队列--Callbacks
  4. jacky解读麻省理工《计算机科学与Python编程导论》第1集
  5. C#性能优化篇 - 基于索引器封装EPList
  6. c++如何快速写出get set_如何快速写出产品文案?(4大核心方法)
  7. JAVA编程思想课程视频
  8. 姓周取名:周姓漂亮有涵养的女孩名字
  9. pt-online-schema-change 脚本化
  10. Math.h 正态分布 C语言,C++与正态分布(示例代码)
  11. 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试了Test,进行测试
  12. 学术数据库---EI
  13. 孤岛双馈风电机组数学模型matlab,大型变速双馈风电机组动态稳定性仿真分析
  14. 电容ESR表(一) 电容ESR表的特点、测量原理、电路分析
  15. 电力行业数字孪生技术应用白皮书(2022)
  16. NIST 网络安全框架导读
  17. 估值冰火两重天 互联网金融巨头“天价”冲刺上市
  18. SN74LVC4245A/(74LVC245) 真是个好东西啊
  19. 如何分析一个网站的SEO情况
  20. MSN协议分析以及Java实现MSN登陆

热门文章

  1. google bookmarks的书签分类的技术
  2. 毛毛虫组【Beta】Scrum Meeting 3
  3. Java 换行和回车
  4. Kotlin定义静态变量、静态方法
  5. JAVA多线程--线程阻塞与唤醒
  6. Java_MD5的使用
  7. High ASCII字符从bat文件到dos控制台的转化问题
  8. IOS数据本地存储的四种方式--
  9. C# ?? 操作符示例
  10. [转]如何写一份交互说明文档