• 技术文章 >web前端 >js教程

    JS判断是否为数组的6种方式

    青灯夜游青灯夜游2021-01-11 18:29:03转载1235

    相关推荐:《javascript视频教程

    一、Array.isArray判断

    用法:Array.isArray(arr)

    ES5中新增了Array.isArray方法,IE8及以下不支持

    Array.isArray() 用于确定传递的值是否是一个[Array], 返回布尔值 true;否则它返回 false。

    let arr = [];
    console.log(Array.isArray(arr)); // true
    // 下面的函数调用都返回 true
    Array.isArray([]);
    Array.isArray([1]);
    Array.isArray(new Array());
    Array.isArray(new Array('a', 'b', 'c', 'd'))
    // 鲜为人知的事实:其实 Array.prototype 也是一个数组。
    Array.isArray(Array.prototype);

    二、constructor判断

    用法:arr.constructor === Array

    Object的每个实例都有构造函数 constructor,用于保存着用于创建当前对象的函数

    let arr = [];
    console.log(arr.constructor === Array); // true

    三、instanceof 判断

    用法:arr instanceof Array

    instanceof 主要是用来判断某个实例是否属于某个对象

    let arr = [];
    console.log(arr instanceof Array); // true

    注:instanceof操作符的问题在于,它假定只有一个全局环境。如果网页中包含多个框架,那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。(红宝书88页上的原话)

    四、原型链上的isPrototypeOf判断

    用法:Array.prototype.isPrototypeOf(arr)

    Array.prototype 属性表示 Array 构造函数的原型

    isPrototypeOf()可以用于测试一个对象是否存在于另一个对象的原型链上。

    let arr = [];
    console.log(Array.prototype.isPrototypeOf(arr)); // true

    五、Object.prototype.toString

    用法:Object.prototype.toString.call(arr) === '[object Array]'

    Array继承自Object,JavaScript在Array.prototype上重写了toString,toString.call(arr)实际上是通过原型链调用了。

    let arr = [];
    console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true

    六、Array 原型链上的 isPrototypeOf

    用法:Array.prototype.isPrototypeOf(arr)

    Array.prototype 属性表示 Array 构造函数的原型

    let arr = [];
    console.log(Array.prototype.isPrototypeOf(arr)); // true

    顺便复习一下typeof的用法:

    对于引用类型,不能用typeof来判断,因为返回的都是object

    // 基本类型
    typeof 123;  //number
    typeof "abc"; //string
    typeof true; //boolean
    typeof undefined; //undefined
    typeof null; //object
    var s = Symbol;
    typeof s; //symbol
    
    // 引用类型
    typeof [1,2,3]; //object
    typeof {}; //object
    typeof function(){}; //function
    typeof  Array; //function  Array类型的构造函数
    typeof Object; //function  Object类型的构造函数
    typeof Symbol; //function  Symbol类型的构造函数
    typeof Number; //function  Number类型的构造函数
    typeof String; //function  String类型的构造函数
    typeof Boolean; //function  Boolean类型的构造函数

    更多编程相关知识,请访问:编程学习!!

    以上就是JS判断是否为数组的6种方式的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:JavaScript 数组
    上一篇:JavaScript中创建对象的7种经典方式(总结) 下一篇:jquery判断是否包含指定字符串

    相关文章推荐

    • 详解JavaScript中的内存管理• JavaScript知识点总结之 函数与事件• JavaScript数组求和的5种常用方法• JavaScript知识点总结之 文档对象模型• 在WebView中使用JavaScript的方法介绍

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网