js数组类型判断与数据类型判断回顾

时间:2022-09-11 14:10:40

判断一个对象是否是数组方法有多种:

一、Array.isArray()函数

在ECMAScript5中可以通过Array.isArray()来做这件事:

Array.isArray({});    //false
Array.isArray([]); //true

二、instanceof

instanceof操作符用于判断一个变量是否为一个对象的实例,只能用于简单的情形:

[] instanceof Array;    //true
{} instanceof Array; //false
d=new Date();
d instanceof Date;      //true d是由Date()创建的
d instanceof Object;    //true 所有的对象都是Object的实例

instanceof的问题:1、检测对象的继承关系,而不检测创建对象的构造函数,无法通过对象来获得类名,只能检测对象是否属于指定的类名;2、在web浏览器中,可能存在多个窗口或多个窗体,每个窗口都有自己js环境和自己的全局对象,每个对象都有自己的一组构造函数,因此一个窗体的对象不可能是另外窗体中的构造函数的实例,窗体中的混淆不常发生。

三、prototype与call

Object.prototype.toString.call([])==="[object Array]"    //true
Object.prototype.toString.call({})==="[object Array]" //false

四、constructor

constructor返回对象的构造函数

[].constructor==Array    //true
{}.constructor==Array //false

注意:使用instanceof和construtor来判断数组 ,被判断的数组必须是在当前页面声明的。比如,在一个子页面中声明了一个数组,并将其值赋给父页面的一个变量,这时判断这个变量:变量.constructor==Array;此时返回false。

原因:数组属于引用数据,在传递过程中仅仅传递引用地址;每个页面Array原生对象的所引用的地址是不一样的,也就是说父页面的Array并不等于子页面的Array。

其他类型的判断方法和数组类似,下面是关于constructor和typeof返回值的一个列表:

变量 变量.constructor typeof 变量
[]   Array object
{} Object object
var f=function(){} Function function
"a string" String string
88 Number number
True Boolean boolean
var a / undefined
null / object
new User() User object

js数组类型判断与数据类型判断回顾的更多相关文章

  1. JS数组类型检测

    在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.f ...

  2. js数据类型判断和数组判断

    这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...

  3. js -【 数组】判断一个变量是数组类型的几种方法

    怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...

  4. js 判断各种数据类型

    了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx) 如下实例: typeof   2      输出   number   ...

  5. js中判断对象数据类型的方法

    对js中不同数据的布尔值类型总结:false:空字符串:null:undefined:0:NaN.true:除了上面的false的情况其他都为true: 如下: var o = { 'name':'l ...

  6. js 判断各种数据类型 typeof 几种类型值

    了解js的都知道, 有个typeof  用来判断各种数据类型,有两种写法:typeof   xxx   ,typeof(xxx) 如下实例: typeof   2      输出   number   ...

  7. JS数据类型判断的几种方法

    JS数据类型判断 JavaScript 中常见数据类型有Number.String.Boolean.Object.Array.Json.Function.Date.RegExp.Error.undef ...

  8. Underscore.js 常用类型判断以及一些有用的工具方法

    1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...

  9. 判断js数组/对象是否为空

    /** * 判断js数组/对象是否为空 * isPrototypeOf() 验证一个对象是否存在于另一个对象的原型链上.即判断 Object 是否存在于 $obj 的原型链上.js中一切皆对象,也就是 ...

随机推荐

  1. [连载]《C#通讯(串口和网络)框架的设计与实现》- 6.通讯控制器的设计

    目       录 第六章           通讯控制器的设计... 2 6.1           控制器接口... 2 6.2           串口控制器... 3 6.3          ...

  2. xcode8.2 打包问题

    如图 在 iOS 到处 ipa包的时候 会有四个选项   PS:证书的账号密码 是需要填写的1.Save for iOS App Store Deployment(部署) sign and packa ...

  3. [转载]DataSet导入到Excel文件

    /// <summary>    /// 将数据导入到Excel    /// </summary>    /// <param name="ds"& ...

  4. &lbrack;RAC&rsqb; oracle rac 后台进程

    一.RAC后台进程 LMON:LOCK Monitor Processes 也被称为Global enqueue service monitor 监控整个集群状况,维护GCS的内存结构 监控非正常终止 ...

  5. mina教程

    关于mina介绍这里不做阐述..... 我们先做一个关于mina的helloworld 首先先下载mina包:http://mina.apache.org/ (如果你已经下载,此步骤忽略) 下载下来以 ...

  6. Oracle 使用

    Oracle 日志文件 摘要: 本篇博文呢主要是介绍 Oracle 日志文件的管理, 对 Oracle 日志文件呢,有两个比较关键的名词, 即日志文件组 LogFileGroup 和日志文件 LogF ...

  7. 自己动手写CPU——寄存器堆、数据存储器(基于FPGA与Verilog&rpar;

    上一篇写的是基本的设计方案,由于考研复习很忙,不知道下一次什么时候才能打开博客,今天就再写一篇.写一写CPU中涉及到RAM的部件,如寄存器堆.数据存储器等. 大家应该在大一刚接触到计算机的时候就知道R ...

  8. Java写xml文件

    import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentHelper; import ...

  9. DragonBones龙骨发布后在Egret中的位置

    DragonBones发布后的动画,加载到Egret中场景中,原点的位置在哪呢? DragonBones中的图片位置 导出 加载到Egret中.可见DragonBones中的图片位置原点左下方(0,0 ...

  10. Selenium2&plus;python自动化44-元素定位参数化(find&lowbar;element)

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...