yuanyuanbyte / Blog

圆圆的博客,预计写七个系列:JavaScript深入系列、JavaScript专题系列、网络系列、Webpack系列、Vue系列、JavaScript基础系列、HTML&CSS应知应会系列。
311 stars 126 forks source link

JavaScript 基础系列之判断数组的方式有哪些 #69

Open yuanyuanbyte opened 2 years ago

yuanyuanbyte commented 2 years ago

本系列的主题是 JavaScript 基础,每期讲解一个技术要点。如果你还不了解各系列内容,文末点击查看全部文章,点我跳转到文末

如果觉得本系列不错,欢迎 Star,你的支持是我创作分享的最大动力。

判断数组的方式有哪些

Object.prototype.toString.call(obj).slice(8,-1) === 'Array';
obj.constructor === Array
Array.isArray(obj);
obj instanceof Array
Array.prototype.isPrototypeOf(obj)

测试一下上面总结的五种方法:

var obj = {};
var arr = [1, 2, 3];

// instanceof

var instanceofObj = obj instanceof Array;
console.log(instanceofObj);

var instanceofArr = arr instanceof Array;
console.log(instanceofArr);

// Array.isArray()
var objout2 = Array.isArray(obj);
console.log(objout2);

var arrout2 = Array.isArray(arr);
console.log(arrout2)

// Array.prototype.isPrototypeOf()

var objout3 = Array.prototype.isPrototypeOf(obj);
console.log(objout3);

var arrout3 = Array.prototype.isPrototypeOf(arr);
console.log(arrout3);

// constructor
var objout4 = (obj.constructor === Array)
console.log(objout4);

var arrout4 = (arr.constructor === Array)
console.log(arrout4)

// obj.prototype.toString.call()
var objout5 = Object.prototype.toString.call(obj);
console.log(objout5);

var arrout5 = Object.prototype.toString.call(arr);
console.log(arrout5);

输出结果:

在这里插入图片描述

查看全部文章

博文系列目录

交流

各系列文章汇总:https://github.com/yuanyuanbyte/Blog

我是圆圆,一名深耕于前端开发的攻城狮。

weixin