JavaScript typeof obj === ‘object’ 这样写有什么问题
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

浙公网安备 33010602011771号