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 相关文章推荐
一个js实现的所谓的滑动门
May 23 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
浅析BootStrap Treeview的简单使用
Oct 12 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
jQuery展示表格点击变色、全选、删除
Jan 05 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
Mar 06 Javascript
解决vue 按钮多次点击重复提交数据问题
May 10 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
js取小数点后两位四种方法
Jan 18 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
JavaScript实现显示和隐藏图片
Apr 29 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
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP队列用法实例
2014/11/05 PHP
理解JavaScript的prototype属性
2012/02/11 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python简易版停车管理系统
2019/08/12 Python
python3中sys.argv的实例用法
2020/04/24 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
一套中级Java程序员笔试题
2015/01/14 面试题
中英文自我评价语句
2013/12/20 职场文书
校长先进事迹材料
2014/02/01 职场文书
廉洁使者实施方案
2014/03/29 职场文书
《天游峰的扫路人》教学反思
2014/04/25 职场文书
妇女干部培训方案
2014/05/12 职场文书
科技节口号
2014/06/19 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
岗位聘任报告
2015/03/02 职场文书
投诉书格式范本
2015/07/02 职场文书
OpenCV实现普通阈值
2021/11/17 Java/Android
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技