当前位置: 首页 > 编程笔记 >

JavaScript中使用Object.prototype.toString判断是否为数组

裘臻
2023-03-14
本文向大家介绍JavaScript中使用Object.prototype.toString判断是否为数组,包括了JavaScript中使用Object.prototype.toString判断是否为数组的使用技巧和注意事项,需要的朋友参考一下

为什么要用Object.prototype.toString而不是Function.prototype.toString或者其它?这是和他们的toString解释方式有关系的。下面是ECMA中对Object.prototype.toString的解释:


Object.prototype.toString( )

When the toString method is called, the following steps are taken: 1. Get the [[Class]] property of this object. 2. Compute a string value by concatenating the three strings “[object “, Result (1), and “]”. 3. Return Result (2)


其过程简单说来就是:1、获取对象的类名(对象类型)。2、然后将[object、获取的类名、]组合并返回。
ECMA中对Array有如下说明:

The [[Class]] property of the newly constructed object is set to “Array”.


因此我们用如下代码来检测数组:

function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  }  


这种方式既解决了instanceof存在的跨页面问题,也解决了属性检测方式所存在的问题,实在是一种妙招,一个很好的解决方案
除此之外,这种解决办法也可以应用于判断Date,Function等类型的对象。
 
另外还有几个方法:

var arr = []; return arr instanceof Array;  


如果有其他好的方法不妨贴出来。

 类似资料:
  • 检查提供的整数是否为素数。 检查数字从 2 到给定数字的平方根。 如果它们中的任何一个可以整除给定的数字,则返回 false ,否则返回 true ,除非数字小于 2 。 const isPrime = num => { const boundary = Math.floor(Math.sqrt(num)); for (var i = 2; i <= boundary; i++) if (

  • cmf_is_wechat() 功能 判断是否为微信访问 参数 无 返回 boolean

  • cmf_is_mobile() 功能 判断是否为手机访问 参数 无 返回 boolean

  • 检查给定的参数是否是一个 symbol。 使用 typeof 来检查一个值是否为一个 symbol 。 const isSymbol = val => typeof val === 'symbol'; isSymbol(Symbol('x')); // true

  • 本文向大家介绍JavaScript判断数字是否为质数的方法汇总,包括了JavaScript判断数字是否为质数的方法汇总的使用技巧和注意事项,需要的朋友参考一下 前言 今天看到一个题目,让判断一个数字是否为质数.看上去好像不难.因此,我决定实现一下. DOM结构 如上所示,我们通过 isPrimeNum(num) 函数,来实现判断是否为质数.下面我们来实现这个函数. 通过FOR循环来判断是否为质数

  • 问题内容: 我有一个AJAX请求,期望以JSON作为响应。 但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。 如何确定响应是否为JSON? (如果有帮助,我正在使用jQuery。但是我不能使用任何插件。) 问题答案: 好吧,如果您使用的是jQuery并指定了对调用的属性,那么jQuery将尝试解析JSON,如果不是,则JSON应该调用回调。 编辑 对于不使