Javascript中常用的检测方法小结


Posted in Javascript onOctober 08, 2016

一、数组检测

1.使用ARRAY.ISARRAY()

Array.isArray(obj)

例如:

Array.isArray([]) //true
Array.isArray({}) //false

兼容性:

CHROME FIREFOX IE OPERA SAFARI
5 4.0(2.0) 9 10.5 5

可以使用以下方式,先检测是否支持Array.isArray

if(Array.isArray){
  return Array.isArray(obj);
}

2. 使用INSTANCEOF

arr instanceof Array

例如:

var arr=[];
console.log(arr instanceof Array); //true

3. 使用OBJECT.PROTOTYPE.TOSTRING方法

if( Object.prototype.toString.call(arr) === '[object Array]' ) {
  console.log("yes");
}

4.使用CONSTRUCTOR的方法

function isArray(obj){
  return !!obj && Array === obj.constructor;
}

二、类型检测

typeof操作符检测给定变量的数据类型

typeof operand //operand 是一个表达式,表示对象或原始值

以下是一些常见类型的返回结果,值得注意的是null返回的是object,其实对于引用类型的判断都为object。

 TYPE   RESULT
 Undefined “undefined”
 Null “object” (see below)
 Boolean “boolean”
Number “number”
String “string”
Symbol (new in ECMAScript 2015)  “symbol”
Host object (provided by the JS environment) Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms) “function”
Any other object “object”

三、对象类型检测

1. INSTANCEOF

用来检测 constructor.prototype是否存在于object 的原型链上

使用方式:

object instanceof constructor

举个例子:

function A(){};
var a=new A();
a instanceof A //true
a instanceof Object //true
a.prototype instanceof Object //true

2. ISPROTOTYPEOF

只要是原型链所派生的实例的原型,会返回true

Object.prototype.isPrototypeOf(instance);

这里需要注意的是与instanceof的区别,在constructors被复写,而又没有重新制定的情况下,照样可以使用isPrototype

var A = {
 //something
}
var B = Object.create(A);
var C = Object.create(B);

console.log(A.isPrototypeOf(C)); // true
console.log(C instanceof A);   //TypeError

3. HASOWNPROPERTY

hasOwnProperty() 方法用来判断某个对象是否含有指定的自身属性。

4. OBJECT.IS()

用来比较两个值是否严格相等,与===相同

四、基本类型检测

NUMBER

Number.isFinite()

用来检查一个数值是否为有限的(finite)

Number.isNaN()

用来检查一个值是否为NaN

Number.isInteger()

用来判断一个值是否为整数。在JavaScript中,整数和浮点数是同样的储存方法,所以1和1.0为同一个值.

Number.isSafeInteger()

JavaScript能够准确表示的整数范围在-2^53到2^53之间(不含两个端点),超过这个范围,无法精确表示这个值。

总结

目前接触到的一些方法,如果有新的日后再更新。感兴趣的朋友们可以继续关注三水点靠木,好了,以上就是这篇文章的全部内容了,希望对大家的学习或者工作能带来一定的帮助。

Javascript 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
jquery数组之存放checkbox全选值示例代码
Dec 20 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
AngularJS自定义指令详解(有分页插件代码)
Jun 12 Javascript
JS作用域链详解
Jun 26 Javascript
Vue中定义全局变量与常量的各种方式详解
Aug 23 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
Mar 25 jQuery
Angular6 Filter实现页面搜索的示例代码
Dec 02 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
使用layui实现树形结构的方法
Sep 20 Javascript
微信小程序 前端源码逻辑和工作流详解
Oct 08 #Javascript
AngularJS 2.0入门权威指南
Oct 08 #Javascript
省市区三级联动jquery实现代码
Apr 15 #Javascript
微信小程序 数据访问实例详解
Oct 08 #Javascript
Bootstrap Table的使用总结
Oct 08 #Javascript
js HTML5手机刮刮乐代码
Sep 29 #Javascript
原生js的RSA和AES加密解密算法
Oct 08 #Javascript
You might like
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
jquery 使用简明教程
2014/03/05 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python计算书页码的统计数字问题实例
2014/09/26 Python
python uuid模块使用实例
2015/04/08 Python
Python图像灰度变换及图像数组操作
2016/01/27 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
python对execl 处理操作代码
2020/06/22 Python
vscode调试django项目的方法
2020/08/06 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
JPA的特点
2014/10/25 面试题
最新计算机专业自荐信
2013/10/16 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
中队活动总结
2014/08/27 职场文书