内置对象和自定义对象类型判断理解。

1.类型获取

对于基础的obj对象,可以用typeof和toString:

内置对象和自定义对象类型判断理解。

但是对于数组对象,typeof得到的是object,toString则直接输出字符串:

内置对象和自定义对象类型判断理解。

这时候需要使用它的构造函数的name属性,就能正常获取array类型:

内置对象和自定义对象类型判断理解。

同样的内置对象Date和obj都可以使用这种方法:

内置对象和自定义对象类型判断理解。

内置对象和自定义对象类型判断理解。

如果要拿到它们的最*object可以用:

内置对象和自定义对象类型判断理解。

总结:需要查看是否是对象用typeof,查看它的构造函数对象用constructor.name,查看它的原型Object用Object.prototype.toString.call的借调方式,相当于调用它的原型toString方法。

如果是自己用构造函数创建的对象,则toString和Object.prototype.toString.call方式获得的都是[object Object],因为构造函数在创建Dog对象时就默认有了var this = new Object()

内置对象和自定义对象类型判断理解。

所以最好的方法用constructor:

内置对象和自定义对象类型判断理解。

2.类型判断

instanceof...

任何类型的祖先都是Object产生的,所以instanceof Object是true

内置对象和自定义对象类型判断理解。