时间:2021-05-26
前言
JavaScript中关于数组的判定问题,一直都是一个必须要掌握的点,那么,运用知识,如何判断一个类型是数组,就需要有对JavaScript使用有着深入的了解。
判断方法
一、Array.isArray
ES5新增的数组方法,Array.isArray应该是我们最先想到的判定方式,现在应用的也比较广泛。
const arr = [1,2,3,4]Array.isArray(arr) // true如果是在支持ES5的浏览器中,用这样的方式自然没什么问题,但是如果是在IE9以下版本,这个方法并未受到支持,这时候我们就要用别的方式来判断数组。
二、instanceof
一般来说,instanceof关键字,是用来判断某个元素是否某对象构造函数实例。在数组判断上,instanceof关键字也可以进行数组的判定。
const arr = [1, 2, 3, 4]arr instanceof Array // trueinstanceof支持的浏览器版本比较多,所以一般来说,用instanceof判断,会比Array.isArray判定的范围要广泛。
三、toString
对象的toString方式也可以判定数组类型,一般来说这种方式的判定是各大库的一种Array.isArray的代替实现。
例如,polyfill中,就是如此实现:
if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; };}const arr = [1, 2, 3, 4]Object.prototype.toString.call(arr) === '[Object Array]' // true四、constructor
除了以上的方式之外,我们还可以通过构造函数来判定:
const arr = [1, 2, 3, 4]arr.constructor === Array // truearr.__proto__.constructor === Array //true弊端
instanceof和constructor的判定也存在一些弊端,他们判定的数组必须定义在同一个页面,否则将会判定为false。
如果在iframe中的数组判定,就会出错。
var iframe = document.createElement('iframe');document.body.appendChild(iframe);xArray = window.frames[window.frames.length-1].Array;var arr = new xArray(1,2,3); // [1,2,3]// Correctly checking for ArrayArray.isArray(arr); // true// Considered harmful, because doesn't work through iframesarr instanceof Array; // falsearr.constructor === Array; // false总结
由上述几个方法判定,可以得出,其实polyfill的判定是最合理的,也最具有兼容性的一种判定。
利用toString判定,胜出。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
javascript判断一个对象为数组的方法数组对象js的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是
1,真正的数组的判断方法javascript中最简单的声明数组方法为:vara=[];判断是否为数组的最直接的方法为:复制代码代码如下:ainstanceofA
1判断是否为数组类型2判断是否为字符串类型3判断是否为数值类型4判断是否为日期类型5判断是否为函数6判断是否为对象1判断是否为数组类型复制代码代码如下://va
文中为大家分享了三种JavaScript判断对象是否为数组的方法,1.typeof首先我们会想到的是使用typeof来检测数据类型,但是对于Function,S
JavaScript本身没有判断一个变量是不是空值的函数,因为变量有可能是string,object,number,boolean等类型,类型不同,判断方法也不