判断数据类型
constructor
判断和构造函数本身是否有关系。
function Person(){
this.name = "张三";
}
// Person.prototype.constructor
let zhangsan = new Person();
// 本身没有constructor属性,父类原型中存在,于是找到去判断实例化对象的指向。
console.log(zhangsan.constructor === Person); // true
console.log([1,2,3].constructor===Array); // true
instanceof
判断对象和构造函数或者原型链上是否有关系。
let arr = [];
// arr和构造函数Array有关系
console.log(arr instanceof Array); // true
// arr和原型链上的Object有关系
console.log(arr instanceof Object); // true
typeof
let arr = [];
let obj = {};
console.log(typeof arr); // object
console.log(typeof obj); // object
Object.prototype.toString().call()
let arr = [];
let obj = {};
console.log(Object.prototype.toString.call(arr)); // [object Array]
console.log(Object.prototype.toString.call(obj)); // [object object]