扫码关注官方订阅号
function isArray(arr){ return Object.prototype.toString.call(arr) == '[object Array]' }
为什么这么判断呢
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
唯一只有 Object 的 toString 方法,可以访问所有内置对象的 [[Class]] 属性的值 , 但是 toString 方法已经被很多对象类型覆盖了,所以你不能用 arr.toString 去判断,只能用
// 这种判断是最安全的 Object.prototype.toString(arr)
楼上说的 arr instanceof Array 去判断是不安全的,在一个页面有多个 iframe 的情况下,因为 Array 是 window 对象的,不同 window 对象的 Array,是不相等的。
arr instanceof Array
这个话题要扯就扯得太深远了,可以去知乎啊,百度啊啥的查查……一般情况下用这个就行了
bool isArray = Array.isArray(obj)
JS中不存在真正的数组,它不像C语言中那样具有内存的连续性、不可变长等特性。JS中的数组你可以理解为一个map,key就是数字,所以你可以自己实现一个对象伪装成数组:
var a = {}; a[0] = 0; a[1] = 1; a.length = 2; // 甚至你也可以添加一些方法... a.push = function(item) { a[++a.length] = item; };
So,你大概明白为什么那么判断是否是数组了么?
也可以
来判断
Object.prototype.toString.call(null,arr) === '[Object Array]'
引入lodash,然后使用_.isArray(value)进行判断
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
唯一只有 Object 的 toString 方法,可以访问所有内置对象的 [[Class]] 属性的值 , 但是 toString 方法已经被很多对象类型覆盖了,所以你不能用 arr.toString 去判断,只能用
楼上说的
arr instanceof Array
去判断是不安全的,在一个页面有多个 iframe 的情况下,因为 Array 是 window 对象的,不同 window 对象的 Array,是不相等的。这个话题要扯就扯得太深远了,可以去知乎啊,百度啊啥的查查……一般情况下用这个就行了
JS中不存在真正的数组,它不像C语言中那样具有内存的连续性、不可变长等特性。
JS中的数组你可以理解为一个map,key就是数字,所以你可以自己实现一个对象伪装成数组:
So,你大概明白为什么那么判断是否是数组了么?
也可以
来判断
Object.prototype.toString.call(null,arr) === '[Object Array]'
引入lodash,然后使用_.isArray(value)进行判断