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 相关文章推荐
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
解决IE6的PNG透明JS插件使用介绍
Apr 17 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
javascript的数组和常用函数详解
May 09 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
Vue.js搭建移动端购物车界面
Jun 28 Javascript
详解JavaScript中操作符和表达式
Sep 12 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
小程序实现分类页
Jul 12 Javascript
vue实现配置全局访问路径头(axios)
Nov 01 Javascript
js实现适配移动端的拖动效果
Jan 13 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 反向排序和随机排序代码
2010/06/30 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
js获取当前日期时间及其它日期操作汇总
2016/03/08 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
深入理解python多进程编程
2016/06/12 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
酒店出纳岗位职责
2013/12/29 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
黄埔军校观后感
2015/06/10 职场文书
少年雷锋观后感
2015/06/10 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
初中毕业生感言
2015/07/31 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
delete in子查询不走索引问题分析
2022/07/07 MySQL