Skip to content
文档章节

判断数组方法

假设 var arr = [], 有如下方法

js
// 常规方法, ES6新增
1. Array.isArray(arr) 

// 跨原型链调用 toString
2. Object.prototype.toString.call(arr).split(' ')[1].split(']')[0] === 'Array'

// 构造函数
3. arr instanceof Array

// 原型链, 检查Array 是否在 arr 的原型链上
4. Array.prototype.isPrototypeOf(arr)

5. arr.__proto__ === Array.prototype

isPrototypeOf

检查 某个对象是否在另一个对象的原型链上面。 下面是 MDN 的解释 MDN isPrototypeOf

Object.prototype.isPrototypeOf() isPrototypeOf() 方法用于测试一个对象是否存在于另一个对象的原型链上。

TIP

isPrototypeOf() 与 instanceof 运算符不同。在表达式 "object instanceof AFunction"中,object 的原型链是针对 AFunction.prototype 进行检查的,而不是针对 AFunction 本身。

示例如下:

js
function Foo() {}
function Bar() {}

Bar.prototype = Object.create(Foo.prototype);

const bar = new Bar();

console.log(Foo.prototype.isPrototypeOf(bar));
// Expected output: true
console.log(Bar.prototype.isPrototypeOf(bar));
// Expected output: true