# 解题思路 or 实现原理

使用 Object.prototype.toString 取得对象的一个内部属性 [[Class]],然后依据这个属性,返回 '[object Array]' 字符串作为结果(ECMA标准中使用[[]]来表示语言内部用到的、外部不可直接访问的属性,称为内部属性)。利用这 个方法,再配合 call,我们可以取得任何对象的内部属性 [[Class]],然后把类型检测转化为字符串比较,以达到我们的目的。

# 实现代码

/*
 * @Author: Rainy
 * @Date: 2019-11-14 19:25:01
 * @LastEditors  : Rainy
 * @LastEditTime : 2020-02-05 15:50:12
 */

import { isAbsType } from '../../utils/type';

export function _isArray(target: any): boolean {
  return isAbsType(target).toLowerCase() === 'array';
}
1
2
3
4
5
6
7
8
9
10
11
12

# 参考

绝对准确地确定JavaScript对象是否为数组 (opens new window)