constructor和instanceof都可以用来判断一个实例对象是由哪个构造函数构造出来的 但instanceof相对于constructor更为可靠 在构造函数的原型对象被改写时候 instanceof依然可以通过原型链查找判断
constructor 的作用是返回实例的构造函数,即返回创建此对象的函数的引用。
instanceof 的作用是判断实例对象是否为构造函数的实例 会沿着原型链一直查找(instanceof运算符用于检测构造函数的prototype属性是否出现在 某个实例对象 的原型链上)
typeof对于数组、对象 null不能正确判断 都返回object
最靠谱的是Object.prototype.toString.call(target)
toString是Object.prototype上的一个方法, 常用方式为 Object.prototype.toString.call(target)
返回值是 [object 类型]字符串,该方法基本上能判断所有的数据类型(自定义数据类型除外)
var arr = [1, 2, 3];
arr.constructor === Array; //true
function Person () {}
function Car () {}
var person = new Person()
console.log(person instanceof Person) //true