内置对象和自定义对象类型判断理解。
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