javascript 判断一个对象为数组的方法
作者:lqh 发布时间:2024-07-15 06:05:07
javascript 判断一个对象为数组的方法
数组对象
js的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是对象或其他数组,这样就可以创建复杂的数据结构。
通常我们可以用一元运算符typeof来判断js的数据类型,但是对于数组这样一个特殊的对象却只能返回"object"
typeof [1,2,3]
"object"
typeof 100
"number"
typeof false
"boolean"
typeof undefined
"undefined"
typeof NaN
"number"
typeof function(){}
"function"
typeof null
"object"
判断数组的方法
instanceof
instanceof 是一个二元运算符,左边操作数是一个对象,不是的话返回false,右边操作数是一个函数对象或者函数构造器,不是的话返回false。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
[1,2] instanceof Array
true
Array.isArray(arr)
这个ES5新增的一个Array方法,该方法是Array对象的一个静态函数,用来判断一个对象是不是数组。
Array.isArray([1,2])
true
如果页面里面有n个frame,就存在多个window,每个window都有自己的Array对象,比如确定子window里的某个数组是不是Array时,用instanceof这个方法就不行了
var fr=window.frames[0];
fr.onload=function(){
console.log(fr.arr instanceof Array);//false
console.log(Array.isArray(fr.arr));//true
//arr是另外一个页面的一个数组
}
Object.prototype.toString.call(arr) === “[object Array]”
Object.prototype.toString.call([1,2])
"[object Array]"
arr.constructor.name==='Array'
[1,2].constructor.name==='Array';
true
但是对象的constructor属性可以被改写,改写后用改方法判断就不行了
var arr=[1,2];
arr.constructor={};
arr.constructor.name === "Array" //undefined
false
其他方法 可以通过数组的一些独有的方法判断该对象是不是数组,比如join,push等
var c=[1,2];
c.push('3');//3
console.log(c)
[1, 2, "3"]
var c="12";
c.push('3');
//Uncaught TypeError: c.push is not a function(…)
var c=[1,2];
c.join('');
"12"
var c='12';
c.join('');
//Uncaught TypeError: c.join is not a function(…)
总结
通过上面的几种判断对象为数组对象的方法分析,使用Array.isArray(arr)和Oblect.prototype.toString.call(arr)是比较好的方法。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/frontender_way/article/details/51760960


猜你喜欢
- 1.删除原有的mariadb,不然mysql装不进去mariadb-libs-5.5.52-1.el7.x86_64rpm -qa|grep
- MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能
- 第一中方法:比较详细以下的文章主要介绍的是MySQL 数据库开启远程连接的时机操作流程,其实开启MySQL 数据库远程连接的实际操作步骤并不
- 找到一句可以获得当前最新ID的语句,如下:conn.execute("insert into member (user,code)
- 队列queue 多应用在多线程应用中,多线程访问共享变量。对于多线程而言,访问共享变量时,队列queue是线程安全的。从queue队列的具体
- 一,extract方法的使用extract函数主要是对于数据进行提取。场景一般对于DataFrame中的一列中的数据进行提取的场合比较多。例
- 1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxE
- 这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 在前人的基础上,我对比较优秀的sql语句进行了重新的编辑和整理,力求精短易学。希望大家可以举一反三,更好学习sql语句,如果有问题,还请翻阅
- >>> import os &n
- 本文实例讲述了JavaScript对象的浅拷贝和深拷贝。分享给大家供大家参考,具体如下:1、浅拷贝仅仅复制对象的引用,而不是对象本身。var
- 单例模式单例是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。单例拥有与全局变量相同的优缺点。 尽管
- 前言推导式提供了更简洁高效的方法来生成序列而又不失代码的可读性。定义: 推导式是 Python 里很有用的一个特性,它可以用一行代码就可以创
- 前言在本文中,我们将介绍一些常见的分布并通过Python 代码进行可视化以直观地显示它们。概率和统计知识是数据科学和机器学习的核心;&nbs
- 首先我们介绍使用自己的数据库查询多个手机号码,那还是建议你拥有一个自己的的手机号码数据库。正常情况下,只是满足一般查询的话,你不需要去购买专
- 一、游戏展示所谓:开局一张图,后面全靠编。先放图片、动画展示一波。游戏玩法很简单,按空格猴子↑跳起来,躲开巨浪袭击,时间越
- getattr()函数是Python自省的核心函数,具体使用大体如下:获取对象引用getattrGetattr用于返回一个对象属性,或者方法
- #!/usr/bin/env python# -*- coding:utf-8 -*-# *************************
- 一、yield关键字实现方式以yield关键字方式实现协程代码如下所示:def fun1(): yield 1 &
- 1.我的MySQL中的start_time存储的是2018-03-21 10:55:32格式的时间,我需要按照YYYY-MM-DD格式来查询