所有分类
  • 所有分类
  • 后端开发

怎么轻松判断一个东东是不是数组?快学这招

你知道怎么分辨什么东东是不是数组不?这问题好像有点新鲜。别怕,我教你方法,肯定让你学到点新玩意儿!

let a = [];
a instanceof Array; //true
let b = {};
b instanceof Array; //false

快试试我这招简易的检测方法,只需要用到instanceof这家伙。只需看看你手头上那个值,看看它在原型链上在它的构造函数里有没有prototype属性就行。听着好像有点复杂?其实超容易懂的!举个例子来说,假如你有个变量a,是个数组的话,那a身上就必定有个Array.prototype属性对。然后我们再检查在a的原型链里面有没有包含Array.prototype这个属性,答案不就出来了吗?但是我得提醒你别忘了还有可能有人偷偷给prototype属性换了个样儿,所以只知道这个还不能确定它就是数组。

你是不是还傻乎乎地不知道怎么辨别呢?其实很简单,看Constructor属性就知道了!每个东西都有自己专属的构造函数~例如,如果一个对象的Constructor属性就是指向Array的话,那毫无疑问,它就是我们所说的数组!不过可别忘了,因为各种因素,querySelector方法的原型也可能发生改变。

//为body创建并添加一个iframe对象
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
//取得iframe对象的构造数组方法
xArray = window.frames[0].Array;
//通过构造函数获取一个实例
var arr = new xArray(1,2,3); 
arr instanceof Array;//false

你知道“Object.prototype.toString.call()”这个神奇的工具吗?它可以瞬间识别各种不同类型的对象,真的特别厉害,超级实用!

let a = [1,3,4];
a.constructor === Array;//true

别急告诉大家一个超级简单有效的技巧——用Array.isArray()查数组。这个办法简单得很,安全高速,值得学会。不过记得,这可是ES5的新东西,别再抱着旧招数不放。

听着!教你怎么分辨是不是数组合,老实用!觉得对你有帮助就给个赞我们今天聊了几种超简单的方法,虽然有些地方可能不准,没关系,根据实际情况挑适合自己的呗!给个好评,记得留个言,再分享给你的小伙伴们!

// 检验是否是数组
 let a = [1,2,3]
 Object.prototype.toString.call(a) === '[object Array]';//true
 //检验是否是函数
 let b = function () {};
 Object.prototype.toString.call(b) === '[object Function]';//true
 //检验是否是数字
 let c = 1;
 Object.prototype.toString.call(c) === '[object Number]';//true

原文链接:https://www.icz.com/technicalinformation/web/html5/2024/03/11289.html,转载请注明出处~~~
0

评论0

请先
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?