参考:https://wangdoc.com/javascript/oop/prototype.html
instanceof运算符返回一个布尔值,表示对象是否为某个构造函数的实例。instanceof运算符的左边是实例对象,右边是构造函数,它会检查右边构造函数的原型对象(prototype),是否在左边对象的原型链上。由于instanceof检查整个原型链,因此同一个实例对象,可能会对多个构造函数都返回true。
var date = new Date();
console.log(date instanceof Date); //true
console.log(date instanceof Object); //true
如果左边对象的原型链上只有null对象,这时,instanceof判断会失真。
var obj = Object.create(null); //返回一个新对象obj
console.log(typeof(obj)); //object
console.log(obj instanceof Object); //false
instanceof运算符的一个应用:判断值的类型。
var arr = [1,2,3,4,5];
var obj = {};
console.log(arr instanceof Array); //true
console.log(obj instanceof Object); //true
注:instanceof运算符只能用于对象,不适用原始类型的值;对于undefined和null,instanceof运算符总是返回false。