js数组类型判断与数据类型判断回顾
判断一个对象是否是数组方法有多种:
一、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数组类型判断与数据类型判断回顾的更多相关文章
- JS数组类型检测
在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.f ...
- js数据类型判断和数组判断
这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...
- js -【 数组】判断一个变量是数组类型的几种方法
怎么判断一个数组是数组呢? 其实这个也是一个常考的题目.依稀记得我为数不多的面试经过中都被问道过. 方案一: instanceof variable instanceof Array 解决思路: 使用 ...
- js 判断各种数据类型
了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx) 如下实例: typeof 2 输出 number ...
- js中判断对象数据类型的方法
对js中不同数据的布尔值类型总结:false:空字符串:null:undefined:0:NaN.true:除了上面的false的情况其他都为true: 如下: var o = { 'name':'l ...
- js 判断各种数据类型 typeof 几种类型值
了解js的都知道, 有个typeof 用来判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx) 如下实例: typeof 2 输出 number ...
- JS数据类型判断的几种方法
JS数据类型判断 JavaScript 中常见数据类型有Number.String.Boolean.Object.Array.Json.Function.Date.RegExp.Error.undef ...
- Underscore.js 常用类型判断以及一些有用的工具方法
1. 常用类型判断以及一些有用的工具方法 underscore.js 中一些 JavaScript 常用类型检查方法,以及一些工具类的判断方法. 首先我们先来谈一谈数组类型的判断.先贴出我自己封装好的 ...
- 判断js数组/对象是否为空
/** * 判断js数组/对象是否为空 * isPrototypeOf() 验证一个对象是否存在于另一个对象的原型链上.即判断 Object 是否存在于 $obj 的原型链上.js中一切皆对象,也就是 ...
随机推荐
- python之 序列与字典遍历
在Python中有六种内建的序列:列表.元组.字符串.Unicode字符串.buffer对象和xrange对象.在这里暂时只讨论字符串.列表和元组的遍历. 一. 序列遍历 序列有两种遍历:一种通过值 ...
- jsp 知识点
在JSP中很多对象是不需要创建的,如out.session等.它们可以直接使用. <% out.println(session.getId()); %>
- script 标签的defer,async的作用,及拓展浏览器多线程,DOMContentLoaded
前端优化有一点就是优化js的执行时机,一般做法是将script放置于body的结束标签,以避免加载执行js 文件导致页面渲染阻塞的问题这种做法确实能防止页面阻塞,但是在页面渲染完成之后才去加载js文件 ...
- Python——递归、二分查找算法
递归函数 1. 递归 (1)什么是递归:在函数中调用自身函数(2)最大递归深度:默认997/998——是Python从内存角度出发做的限制 n = 0 def story(): global n n+ ...
- C#使用WebService 常见问题处理
C#使用WebService 一.新建webservice 新建项目→asp.net Web服务应用程序 或者在现有项目中 点击右键 新建web服务程序asmx 只要在webservice类里面 ...
- Javascript中的delete介绍
关于JavaScript中的Delete一直没有弄的很清楚,最近看到两篇这方面的文章,现对两文中部分内容进行翻译(内容有修改和添加,顺序不完全一致,有兴趣推荐看原文),希望能对大家有所帮助 一.问题的 ...
- java IO字符流
字节流:因为内存中数据都是字节,二进制数据. 字符流:方便处理文本数据.字符流是基于字节流的. ascii 编码表,并且各国都有自己的编码表. unicode码表,世界码表.优化后 utf-8码表. ...
- css属性所对应js属性
document.getElementById("xx").style.xxx中的所有属性是什么,css对应js: 盒子标签和属性对照 CSS语法(不区分大小写) JavaScri ...
- 操作系统-容器-Docker:如何将应用打包成为 Docker 镜像?
ylbtech-操作系统-容器-Docker:如何将应用打包成为 Docker 镜像? 1.返回顶部 1. 虽然 DockerHub 提供了大量的镜像,但是由于企业环境的多样性,并不是每个应用都能在 ...
- COMMON INTERVIEW QUESTIONS
1. What do you see yourself doing five years from now? 2. What motivates you to put forth your great ...