let arr = [1, 2, 3];
console.log(arr instanceof Array);
console.log(arr.constructor === Array);
console.log(Array.isArray(arr));
console.log(Object.prototype.toString.call(arr) === "[object Array]");
console.log(arr.__proto__ === Array.prototype);
console.log(Object.getPrototypeOf(arr) === Array.prototype);
console.log(Array.prototype.isPrototypeOf(arr));
let object = { name: "你好", age: "18" };
console.log(object.constructor === Object);
console.log(Object.prototype.toString.call(object) === "[object Object]");
console.log(object.__proto__ === Object.prototype);
console.log(Object.getPrototypeOf(object) === Object.prototype);
总结
判断是否为数组
- 使用 instanceof 判断类型是否为 Array 类型。
- 查看构造器是否为 Array 类型。
- 判断数组专门的方法,Array.isArray()。
- 使用 Object 类型的原型方法判断类型是否为 Object Array。
- 比较目标的原型和 Array 类型的原型。
- 使用 Array 类型的原型方法判断
判断是否为对象
- 查看构造器是否为 Object 类型
- 使用 Object 类型的原型方法判断类型是否为 Object object
- 比较目标的原型和 Object 类型的原型