typeof instanceOf 的区别

192 阅读1分钟
// typeof instanceOf 的区别

// typeof 可以校验我们的6种原始类型 null undefiend boolen string number symbol
// 但是小小问题, typeof null === 'Object';
// typeof校验引用类型的时候 [], {}, reg, function
console.log(typeof []); // object
console.log(typeof {}) // object
console.log(typeof /A/) // object
console.log(typeof function(){}) // function


// 从上面几个就能看出来typeof 在校验引用类型的时候并不是很准确

console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call({})); // [object Object]
console.log(Object.prototype.toString.call(/A/)); // [object RegExp]
console.log(Object.prototype.toString.call(function(){})); // [object Function]

// 但是 Object.prototype.toString 有一个缺陷,并不能校验我们当前的是属于某一个实例的
// 不能校验自定义类型
class A {}
let a = new A();
console.log(Object.prototype.toString.call(a)); // [object Object]


// instanceOf
console.log([] instanceof Array);
console.log({} instanceof Object);
console.log(/A/ instanceof Object);