分享好友 最新动态首页 最新动态分类 切换频道
js基础复习篇--判断object对象是否是数组
2024-12-26 13:08

首先,js的数据类型分为两类,基本数据类型(值类型)和对象类型(引用类型)。
基本数据类型有:字符串、number、布尔、symbol、undefined、null.
引用数据类型:object普通对象:存储的功能
Array数组对象:有下标,内部数据有序
Function:内部有可执行的代码

该方法返回是字符串的表达形式

 

在使用 typeof 运算符时采用引用类型存储值和null会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”

 

2.2instanceof 运算符的常规用法
// 判断 foo 是否是 Foo 类的实例

 

2.3//instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型

 
 

所以

 

但是,使用instanceof检测数组不准确

 

instanceof操作符的问题在于,它假定只有一个全局环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。
如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。
array属于引用型数据,在传递过程中,仅仅是引用地址的传递。每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的array,所对应的构造函数,是子页面的Array对象;父页面来进行判断,使用的Array并不等于子页面的Array;切记,不然很难跟踪问题
此外,但 instanceof 只能用来判断对象类型,原始类型不可以。所有的基本类型使用instanceof方法会返回false,并且所有对象类型 instanceof Object 都是 true。
3.constructor方法

 
 

而很明显str不是数组,因为constructor可以被重写,所以不能确保一定是数组,其次,IE早期版本里面__proto__是没有定义的,另外constructor和instanceof存在同样问题,不同执行环境下,constructor判断不正确。

最终确定某个值到底是不是数组而不管它是在哪个全局执行环境中创建的,这个方法的用法如下。

if(Array.isArray(value)){
return true;
}
因为是新添加的,在不支持的浏览器上可能有兼容性,用的时候需要兼容下不支持的浏览器

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法.返回一个‘[object 构造函数名]’字符串,每个类内部都有一个[[class]]属性,这个属性指定了字符串中的构造函数名。原生数组的构造函数名与全局作用域无关,所以在不同作用域下使用该方法能返回一致的结果。

 

自己可以封装一个获取变量类型的函数

 

参考文献1

最新文章
华为nova 13/Pro手机正式进军欧洲市场:搭载EMUI 14.2,起售价549欧元
IT之家12月13日消息,在科技界备受瞩目的华为nova 13系列,终于在今年10月22日以惊艳的姿态发布,并在最新宣布后成功进军欧洲市场。伴随着全球市场的日益竞争,这款手机的表现无疑是各方关注的热点。华为nova 13/Pro系列手机均搭载强劲的麒
通达信未来函数指标详解:提高选股效率的利器
在股票交易中,的是一种强大的工具,它们能够帮助投资者提高选股效率,成为投资的利器。这些指标基于历史数据和特定的数学模型,通过对股票价格和成交量等指标进行分析,来预测未来股价的走势。通过复杂的计算公式,结合多种技术分析方法,
辽宁优化搭建,企业竞争力提升之道
本文深入解析辽宁优化搭建服务,涵盖从策略制定到技术实施的全方位指导,助力企业打造高效、易用的,提升市场竞争力,实现营销的全面突破。辽宁优化与搭建服务的价值所在挑选辽宁优化与搭建服务时的关键考量在互联网高速发展的今天,企业越
轮回造个伤感的句子说说短句(时间轮回伤感句子简短)
1 . 有时候,我想消失一下,然后看看是否会有人想念我。2 . 你塞满我整个过去,却在我的未来永远地缺席。3 . 胡雁哀鸣夜夜飞,胡儿眼泪双双落。6 . 在接下来的时光里,我愿放慢脚步,用理智的思维,轻盈从容的踏过花开的温暖,在芬芳的世界
银联国际
银联国际是中国银联旗下的全球支付网络服务提供商。作为中国最大的银行卡支付网络,银联国际致力于为全球客户提供安全、便捷的支付解决方案。银联国际通过建立与全球银行、机构和支付网关的合作关系,构建了一个强大的全球化支付网络。这一
微信怎么创建小程序
随着移动互联网的飞速发展,微信小程序已成为许多企业和个人展示服务、推广品牌的重要平台。那么,如何在微信上创建小程序呢?下面,我们将分步骤为大家详细介绍。**一、注册小程序账号**首先,你需要进入微信公众平台官网,点击右上角的“
在 Linux 上搭建 Java Web 项目环境(最简单的进行搭建)
要在 Linux 上安装的程序有 1.JDK (要想运行 java 程序 JDK 是必不可少的) 2.Tomcat (HTTP 服务器,是管理 Web 项目的常用工具) 3. mysql (数据库)        博主使用的 Linux 发行版是 centos ࿰
小红书关键词检测,善于用工具小红书运营推广效果事半功倍
小红书作为一个年轻化、内容多元的生活方式分享平台,越来越多的企业开始重视其内容营销。然而,在数以亿计的笔记中脱颖而出,不仅需要匠心独运的内容创作,更离不开精准的关键词检测与优化。本文七月笙笙July Brand将通过对小红书关键词检
航海王壮志雄心克洛怎么样 航海王壮志雄心克洛详细介绍
在该游戏中,玩家可去解锁许多不同的角色,并且在技能定位以及玩法上也是十分出色,因此吸引了许多的玩家加入其中,本期小编主要是来说说航海王壮志雄心克洛,作为一个热血风格的角色,它的怒气可是能自然增长的,朋友们近期若是对于此很是
相关文章
推荐文章
发表评论
0评