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 相关文章推荐
Tips 带三角可关闭的文字提示
Oct 06 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
Javscript删除数组中指定元素并返回新数组
Mar 06 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
May 30 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
vue项目中api接口管理总结
Apr 20 Javascript
webpack css加载和图片加载的方法示例
Sep 11 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
Vuex模块化应用实践示例
Feb 03 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
mysql 全文搜索 技巧
2007/04/27 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
python多任务之协程的使用详解
2019/08/26 Python
基于html5实现的图片墙效果
2014/10/16 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
自荐信范文
2013/12/10 职场文书
中式婚礼主持词
2014/03/13 职场文书
医药营销个人求职信
2014/04/12 职场文书
企业文化口号
2014/06/12 职场文书
个人股份转让协议书范本
2014/10/26 职场文书
白鹤梁导游词
2015/02/06 职场文书
2015年司机工作总结
2015/04/23 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
导游词之井冈山
2019/11/20 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis