博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断数组真伪的方法总汇
阅读量:3960 次
发布时间:2019-05-24

本文共 1551 字,大约阅读时间需要 5 分钟。

有手就行-数组真伪API

前言

在js中数组类型大家应该都不陌生,那你是否知道数组其实是有真假之分的呢?

什么是伪数组。

伪数组:1、拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理,这里你可以当做是个非负整数串来理解

2、不具有数组所具有的方法

常见的伪数组有:

  • 原生js获取dom元素得到的集合,例如:使用document.getElementsByTagName获取的元素标签集合就是伪数组
  • 函数的argument参数

创建伪数组和真数组实例。

对象隐式原型的构造函数判断

console.log(divs.__proto__.constructor);//结果为:ƒ HTMLCollection() { [native code] }//HTML 元素的集合console.log(arr.__proto__.constructor);//结果为:ƒ Array() { [native code] }//构造函数Array

原理: 真数组都是由Array构造出来的对象,所以它的隐式原型的构造属性为Array

.toString()方法

console.log(divs.toString());  //结果为:[object HTMLCollection]  console.log(arr.toString());  //结果为:1,2

原理: 真数组调用toString方法会强转为字符串,但是伪数组调用toString方法返回的结果中括号后面的为它的构造函数类型

Object.prototype.toString.call方法

console.log(Object.prototype.toString.call(divs));  //结果为:[object HTMLCollection]  console.log(Object.prototype.toString.call(arr));  //结果为:[object Array]

原理: 利用call改变Objcet方法的this指向,从而使真伪数组都可使用,返回的结果中括号后面的为它的构造函数类型

instanceof判断

console.log(divs instanceof Array);//结果为:falseconsole.log(arr instanceof Array);//结果为:true

原理: 检测构造函数(Array)prototype 属性是否出现该实例对象原型链上。

Array.isArray()判断

console.log(Array.isArray(divs));//结果为:falseconsole.log(Array.isArray(arr));//结果为:true

原理: 最常见的判断是否是一个数组

数组方法来判断

try {
console.log(divs.push(1));//报错 } catch (err) {
console.log("divs没有push方法"); } console.log(arr.push(1));//返回了3

原理: 伪数组没有数组具有的方法,则伪数组调用数组方法时抛出错误信息。

isPrototypeOf

console.log(Array.prototype.isPrototypeOf(divs));	//结果为:false    console.log(Array.prototype.isPrototypeOf(arr));    //结果为:true

原理: 判断对象是否在指定对象的原型链上

转载地址:http://jwezi.baihongyu.com/

你可能感兴趣的文章
Selenium-webdriver系列教程(8)———使用Page Object设计模式
查看>>
Python logging模块详解
查看>>
加载selenium2Library失败---robotframework环境搭建(RIDE无法启动?)
查看>>
Robot Framework 的安装配置和简单的实例介绍
查看>>
APP功能测试的7大注意点
查看>>
Python之unittest
查看>>
Fiddler之——Fiddler简介
查看>>
Fiddler之——Fiddler抓包分析
查看>>
Android开发之——activity跳转
查看>>
Android开发之——Menu 操作
查看>>
Android开发之——布局实例
查看>>
Android开发之——SQLite使用方法
查看>>
Python之SMTP发送邮件
查看>>
手动测试无法被取代的理由
查看>>
浅析移动测试:应用上线不“裸奔”的正确方式
查看>>
Robot Framework之元素定位
查看>>
性能测试方案之性能测试术语解释
查看>>
性能测试方案之性能测试方法
查看>>
测试方法之单元测试
查看>>
QTP之——Failed to run script. Description: 没有注册类别
查看>>