js验证对象类型

1. Object.prototype.toString.call()

这是最佳解决方案,可以用作通用方式处理。各种类型的判断依据类似于[object Object],替换的是后边的Object为其他类型。

let x = {
a: 1,
b: 2,
c: 3
}
console.log(Object.prototype.toString.call(x) === '[object Object]'); // true

2. constructor和instanceof

这两个实现的功能是类似的,都不可以判断null和undefined类型,而且相比第一种有个重大的缺陷——在某些ie版本中存在跨iframe问题,由于每个iframe下都有自己的一套原型链,跨iframe后导致实例化后的对象不共享原型链。

let x = {
a: 1,
b: 2,
c: 3
}
console.log(x.constructor === Object); // true
console.log(x instanceof Object); // true

3. typeof

typeof可以说是最常用的方式,但是这个仅能够判断基本类型,一般使用的时候和第二种方法组合可以实现第一种的功能。

let x = {
a: 1,
b: 2,
c: 3
}
let y = [];
console.log(typeof x); // object
console.log(typeof y); // object
console.log(typeof y && y.constructor === Array); // true

js验证对象类型的更多相关文章

  1. JS判断对象类型

    对于确定JS内置对象类型,JS提供了typeof运算符,该运算符得到的结果为以下6种:number,boolean,string,function,object,undefined.不过对绝大多数对象 ...

  2. JS区分对象类型

    Object.prototype.toString.call() 区分对象类型 在JavaScript中数据类型分为:1.基本类型,2.引用类型 基本类型:Undefined,Boolean,Stri ...

  3. js 判断对象类型

    在企业级的开发中,我们常用 typeof 来判断企业 对象类型:但是 typeof 不能判断 Array 和 null 这里我们使用一个 原型上的 toString方法:请看一下代码: <scr ...

  4. 使用JS验证文件类型

    项目中涉及到这一需求,在此贴出代码分享给大家, 有2中方式,一种是input中使用accept 方式 一种是使用js正则表达式判断,个人推荐使用js正则表达式,因为accept 有的浏览器并不支持,而 ...

  5. js 验证对象是否为数组

    一.方法一:用到了原型 由于typeof检测数组,只会显示其为object,并不会详细到告诉我们是否为array,所以我们可以自己写个js用原型来检测: <script> /** * * ...

  6. js接收对象类型数组的服务端、浏览器端实现

    1.服务端 JSONArray jsonArr = JSONUtil.generateObjList(objList); public static generateObjList(List<O ...

  7. JS 之Blob 对象类型

    原文 http://blog.csdn.net/oscar999/article/details/36373183 什么是Blob? Blob 是什么? 这里说的是一种Javascript的对象类型. ...

  8. js 的强制 类型 转换cast, 伪对象?

    拼音输入法简单快捷, 但是重码多, 所以要看清了再选择, 不然会影响输入正确性和 心情的! js的类型 隐式 转换? 是指, 根据 表达式的操作符号 如if(), + , && , j ...

  9. 2016年11月3日JS脚本简介数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语

    数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6 ...

随机推荐

  1. 阿里云-免费SSL证书申请及验证步骤

    1.登录阿里云管理控制台,在搜索栏输入ssl,选择第一个SSL证书控制台回车即可 2.点击右上角的购买证书 3.选择购买最后一个品牌 4.选择增强型OV SSL 5.选中后会自动弹出免费型DV SSL ...

  2. mac电脑上如何启动mysql

    export PATH=$PATH:/usr/local/mysql/bin/   mysql -uroot -p

  3. 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式

    如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.

  4. 前端基础:web语义化

    web语义化 一.什么是web语义化? web语义化包含两方面,一是html标签语义化,简单来说就是要用合适的标签来表述适当的内容,标题用<h1>~~<h6>标签,段落用< ...

  5. Ant将Jmeter的jtl文件转为html文件报“前言中不允许有内容”

    ant执行jmeter的脚本的时候提示“Fatal Error! 前言中不允许有内容” 解决办法: 在jmeter的bin目录中找到jmeter.properties: 将文件中#jmeter.sav ...

  6. C# 特性(Attribute)之Serializable特性

    转载自:https://www.cnblogs.com/GreenLeaves/p/6753261.html 介绍之前,先说一个重要的知识点: Serializable属性并不序列化类,它只是一个标签 ...

  7. DateTime?,也是一种类型,代表DateTime或NULL两种类型,在处理空时间时比较有用

    public static DateTime? GetDateTimeFromStr(string date) { if (date.Trim() == string.Empty) return nu ...

  8. CURL 支持 GET、PUT、POST、DELETE请求

    一个方法解决所有的 curl 请求的问题. <?php function curlTypeData( $method, $url, $data=false, $json=false ) { $d ...

  9. js 去除左右空格

    /*****************************************************Method1*************************************** ...

  10. 五、使用druid管理数据库,mybatis连接mysql数据库

    简介:    使用 mybatis 连接 mysql 数据库, 一套简单的增删改查流程, 前台用 bootstrap, bootstrap-table 框架, 最后用 druid 监控数据库连接情况 ...