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 相关文章推荐
用javascript来实现动画导航效果的代码
Dec 16 Javascript
JavaScript对象模型-执行模型
Apr 28 Javascript
javascript getElementsByClassName 和js取地址栏参数
Jan 02 Javascript
javascript中创建对象的三种常用方法
Dec 30 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
vue.js+boostrap项目实践(案例详解)
Sep 21 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
vue打包使用Nginx代理解决跨域问题
Aug 27 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
微信小程序实现弹出菜单动画
Jun 21 Javascript
jQuery实现推拉门效果
Oct 19 jQuery
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
微信小程序 前端源码逻辑和工作流详解
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加密解密函数(动态加密)
2013/06/19 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
2017/06/13 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
Python读写unicode文件的方法
2015/07/10 Python
Django数据库表反向生成实例解析
2018/02/06 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python math模块的基本使用教程
2021/01/16 Python
高中英语演讲稿范文
2014/04/24 职场文书
个人总结与自我评价
2014/09/18 职场文书
出纳工作检讨书范文
2014/12/27 职场文书