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 相关文章推荐
Node.js中使用Buffer编码、解码二进制数据详解
Aug 16 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
Node.js批量给图片加水印的方法
Nov 15 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
Mar 04 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
Angular.JS读取数据库数据调用完整实例
Jul 02 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 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
PHP4之COOKIE支持详解
2006/10/09 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
php实现的xml操作类
2016/01/15 PHP
PHP数组函数知识汇总
2016/05/12 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python挖矿算力测试程序详解
2019/07/03 Python
Python OpenCV图像指定区域裁剪的实现
2019/10/30 Python
如何基于Python实现数字类型转换
2020/02/07 Python
Python基础类继承重写实现原理解析
2020/04/03 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
JSF如何进行表格处理及取值
2012/08/06 面试题
社团2014年植树节活动总结
2014/03/11 职场文书
新农村建设标语
2014/06/24 职场文书
无私奉献演讲稿
2014/09/04 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书