typeof Array, Object, new Class() 都会返回'object', 所以使用typeof不能准确的判断变量是否为object
typeof []; //object typeof {}; //object typeof new (function (){}); //object typeof 1; //number typeof '1'; //string typeof null; //object typeof true; //boolean
要
准确判断一个变量是否是一个对象,可以使用constructor以及instanceof判断。
1. constructor是指该对象的构造函数, 使用constructor时, 要注意, 实例化类时, 类的prototype.constructor需要正确引用。
({}).constructor === Object; //true (1).constructor === Number; //true ([]).constructor === Array; //true ('1').constructor === String; //true (true).constructor === Boolean; //true
2. instanceof是指该对象是否为指定类的实例
({}) instanceof Object; //true ([]) instanceof Array; //true (1) instanceof Number; //true ('1') instanceof String; //true (true) instanceof Boolean; //true