在这里插入图片描述
由此可见,typeof是无法区分array,null,object,new+函数,才有instanceof。instanceof判断该对象是谁的实例
1.typeof判断所有变量的类型,返回值有number,boolean,string,function,object,undefined。
2.typeof对于丰富的对象实例,只能返回"Object"字符串。
3.instanceof用来判断对象,代码形式为obj1 instanceof obj2(obj1是否是obj2的实例),obj2必须为对象,否则会报错!其返回值为布尔值。
4.instanceof可以对不同的对象实例进行判断,判断方法是根据对象的原型链依次向下查询,如果obj2的原型属性存在obj1的原型链上,(obj1 instanceof obj2)值为true。
instanceof 能判断基本数据类型吗?
能,可以通过Symbol.hasInstance判断某对象是否为某构造器的实例
class array2{
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
}
console.log([] instanceof array2) //true
class number1{
static [Symbol.hasInstance](x) {
return return typeof x === 'number'
}
}
console.log(11 instanceof number1) //true