资讯专栏INFORMATION COLUMN

Javascript中的常用的检测方法

muddyway / 1612人阅读

摘要:数组检测使用例如兼容性可以使用以下方式,先检测是否支持。用来比较两个值是否严格相等,与相同基本类型检测用来检查一个数值是否为有限的用来检查一个值是否为用来判断一个值是否为整数。目前接触到的一些方法,有新的日后再更新。

数组检测 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之间(不含两个端点),超过这个范围,无法精确表示这个值。

目前接触到的一些方法,有新的日后再更新。

参考资料

Check if object is array?

MOZILLA DEVELOPER NETWORK

阮一峰 《ECMAScript 6入门》

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80596.html

相关文章

  • JavaScript 表单脚本

    摘要:文本框获得焦点时,选中其中所有的文本思路利用焦点事件事件,在文本框获得焦点时,利用其方法选中所有文本。自动切换焦点思路利用事件检测用户输入新字符后,文本框内的字符串是否已经达到最大长度,若达到最大长度,则将焦点切换至下一个文本框。 JavaScript 表单脚本 通过 document.forms 可以获得一个包含当前页面中所有表单的集合 HTMLFormElement 接口 下面是这...

    PrototypeZ 评论0 收藏0
  • 《编写可维护JavaScript》之编程实践

    摘要:最近读完编写可维护的,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话题,这本书是一个不错的起点。扩展阅读编写可维护的欢迎来到石佳劼的博客,如有疑问,请在原文评论区留言,我会尽量为您解答。 最近读完《编写可维护的JavaScript》,让我受益匪浅,它指明了编码过程中,需要注意的方方面面,在团队协作中特别有用,可维护性是一个非常大的话...

    张春雷 评论0 收藏0
  • JavaScript检测原始值、引用值、属性

    摘要:检测函数从技术上讲,中的函数是引用类型,同样存在构造函数,每个函数都是其实例,比如不好的写法然而,这个方法亦不能跨帧使用,因为每个帧都有各自的构造函数,好在运算符也是可以用于函数的,返回。 上周写过一篇读书笔记《编写可维护的JavaScript》之编程实践,其中 第8章 避免『空比较』是博主在工作中遇坑较多的雷区,所以特此把该章节重新整理分享,希望大家不再坑队友(>﹏<)。 在 Jav...

    刘德刚 评论0 收藏0
  • JavaScript 客户端检测——“能力检测注意要点

    摘要:能力检测性能检测基本模式语法目标不是识别特定的浏览器,而是识别浏览器的能力。更可靠的能力检测能力检测对于想知道某个特性是否会按照适当方式行事非常有用。所以在可能的情况下,要尽量使用进行能力检测。 客户端检测 不到万不得已,就不要使用客户端检测。只要能够找到更通用的方法,就应该优先采用更通用的方法。先设计最通用的方案,然后再使用特定于浏览器的技术增强该方案。 能力检测(性能检测) 基本模...

    Pluser 评论0 收藏0
  • JavaScript常用脚本集锦6

    摘要:它会指出一个类是继承自另一个类的。测试测试代码来源页面倒计时的一段运用倒计时的一段脚本。截止日期符合日期格式,比如等有效日期。截止的天数小时分钟秒数组成的对象。 清楚节点内的空格 function cleanWhitespace(element) { //如果不提供参数,则处理整个HTML文档 element = element || document; //...

    Acceml 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<