1、从构造函数入手,obj instanceof Array

typeof 和 instanceof 都可以用来判断变量,typeof方法返回一个字符串,来表示数据的类型; 但是typeof来判断数据类型其实并不准确。比如数组、正则、日期、对象的typeof返回值都是object,这就会造成一些误差。

而instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,返回一个布尔值。

2、从原型入手,Array.prototype.isPrototypeOf(obj);

利用isPrototypeOf()方法,判定Array是不是在obj的原型链中,如果是,则返回true,否则false。

3、Array.isArray()方法

其实js已经提供了判断是不是数组类型的方法,如下:

在MDN中就比较了isArray和instanceof的区别,当Array.isArray()不可用的使用,MDN做了如下的补丁,说明还是比较推荐使用前面讲的第三种方法 Object.prototype.toString.call(obj)。

4、根据对象的class属性(类属性),跨原型链调用toString()方法。

解释一下,在js中一个对象一旦被创建,在内部会携带创建对象的类型名,一旦创建就不能被修改了。那么怎么获取这个对象的类型名呢?

js中提供了,调用对象原型中的toString方法, Object.prototype.toString.call(obj);因为很多对象继承的toString()方法被重写了,为了能够调用正确的toString()版本,也就是最原始的版本。可以使用Function.call()的方法,其中call可以这么理解,相当于obj去借用这个 Object.prototype.toString();

那么有了这个方法,获取对象名可以这样获取:

或者

java判断是否是数组_java判断对象是否是数组相关推荐

  1. java判断是否是数组_Java判断对象类型是否为数组

    判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...

  2. java面向对象数组_Java面向对象的构造器与数组对象

    Java开发离不开面相对象,那么面向对象如何来的?什么又是数组对象?今天小编就来与大家共同学习一下Java的面向对象的构造器与数组对象. 构造器:用于创建对象时执行初始化.当创建一个对象时eg:new ...

  3. java对象数组_Java中对象数组的使用方法详解

    本文实例讲述了Java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  4. java中的对象数组_Java中对象数组的使用方法详解

    本文实例讲述了java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  5. java判断时间是不是星期五_Java判断当前日期是星期几

    参考链接地址:http://blog.csdn.net/a9529lty/article/details/3206942 /** * 判断当前日期是星期几 * @param pTime 修要判断的时间 ...

  6. java数组可以包含对象吗_数组可以包含对象类型的元素吗_对象数组

    对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了. 怎样声明包含 5 个元素的对象数组,每个元素都是 Employee 类型的对象 浏览次数:4875 bill ...

  7. java不等长二维数组_Java中关于二维数组的理解与使用

    今天练习的时候遇到一个题目,题目需求是这样的: 需求说明: 根据3个班各5名学生某门课程的成绩,正确使用二维数组计算如图所示3个班各自的总成绩 分析: 要实现这个功能需要存储两个信息: 一个是班级信息 ...

  8. java int byte数组_Java 中int与byte数组转换详解

    1.与运算符的理解(&): 参加运算的两个数据,按二进位进行"与"运算.如果两个相应的二进位都为1,则该位的结果值为1,否则为0.即 0&0=0:0&1=0 ...

  9. java 申请不定长度数组_java中申请不定长度数组ArrayList的方法

    如下所示: import java.util.ArrayList; //java中申请不定长度数组 public class Test01 { public static void main(Stri ...

  10. java new数组_Java如何使用new创建数组

    java语言使用new操作符来创建数组,语法如下: arrayRefVar = new dataType[arraySize]; 上面的语法语句做了两件事: 一.使用dataType[arraySiz ...

最新文章

  1. sublime怎么编译java_文本编辑利器:Sublime Text3 编译运行Java程序
  2. 【研究】大脑如何在“知道”与“无知”之间做出决定
  3. Linux 磁盘坏道检测和修复
  4. 成功解决label_error >= 0 label_error < static_cast<int>(nclass) MultiClassEvaluation: label must be i
  5. system 后门 php,php后门的编写
  6. 2020-06-18 CVPR2020 VL论文讨论(1) 笔记
  7. 一个方案提升Flutter内存利用率(干货)
  8. 文献学习(part40)--Efficient multi-modal geometric mean metric learning
  9. 演示:使用Sniffer统计与分析流量
  10. java 8是指什么_java中8个基本数据类型到底是指什么?是什么意思,有什么作用?我需要权威的回答,...
  11. asp.net如何取得纯客户端控件的值
  12. 深度学习之dropout
  13. LuaForUnity3:Lua的分支结构、循环结构与数组
  14. zmap扫描mysql_zmap/masscan 快速扫描网络
  15. C++ primer 第十一章 关联容器
  16. Java 快速排序,递归排序算法
  17. 腾讯云运维工程师认证TCA原题(2)
  18. 最常用计算机文件后缀名,文件扩展名/后缀名是什么 常用的文件扩展名大全
  19. ctfshow 萌xin赛misc
  20. 多篇用DL做Semantic Segmentation的文章总结

热门文章

  1. 【Fluent】雷诺方程:推导与求解(附MATLAB代码)
  2. 卡特兰数 (hdu3723 Delta Wave)
  3. 四大Hybrid App移动开发平台对比
  4. [MEGA DEAL] HyperCam 5:家庭版(50%)
  5. 俞永福:UC乐园2年内要给合作伙伴分成1亿元
  6. 在angular中,我有一个路由'/sdfsd/sss/ss',实现在一函数,判断路由配置对象中是否存在该路由...
  7. 在gitlab上使用动态gif作为自己的头像(转)
  8. 备忘录解决多边形游戏
  9. 西门子V90伺服DI/DO口的接线及参数定义
  10. Windows作为NTP同步时间的服务器时的设置