(自用面试题)判断一个对象是不是数组的方法有哪些?

59 阅读1分钟
  1. instanceof操作符
    返回布尔值

eg:

if(obj instanceof Array){
}
  1. ES5新增的Array.isArray()方法
    返回布尔值

eg:

if(Array.isArray(obj)) {
}

拓展:
使用instanceof操作符的前提是假定只有一个全局执行上下文。如果网页里有多个框架,则可能涉及两个不同的全局执行上下文,因此就会有两个不同版本的Array构造函数。如果要把数组从一个框架传给另一个框架,则这个数组的构造函数将有别于在第二个框架内本地创建的数组。为了解决这个问题,ES5提供了Array.isArray()方法。这个方法的目的就是确定一个值是否为数组,而不用管它是在哪个全局执行上下文中创建的。

  1. 原型链
    返回布尔值

eg:

obj.__proto__ === Array.prototype;
  1. Array.prototype.isPrototypeOf()
    返回布尔值

eg:

Array.prototype.isPrototypeOf(obj);
  1. Object.prototype.toString.call()
    返回[object Xxx]格式的字符串