1:xx.constructor
let arr = [];
let obj = {};
console.log(arr.constructor); // ƒ Array() { [native code] }
console.log(obj.constructor) // ƒ Object() { [native code] }
2:A instanceof B (判断A的原型链上有没有B的原型)
let arr = [];
let obj = {};
// arr 的原型链上有Array的原型,obj没有
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
// 错误,arr和obj的原型链上都有Object的原型,所以不能用 Object 来判断
console.log(arr instanceof Object); // true
console.log(obj instanceof Object); // true
3:Object.prototype.toString.call(xx)
let arr = [];
let obj = {};
console.log(Object.prototype.toString.call(arr)); // [object Array]
console.log(Object.prototype.toString.call(obj)) // [object Object]