Open liukexina opened 4 years ago
typeof 返回 number、boolean、symbol、string、object、undefined、function。 typeof null == 'object' // null ==> Null 引用类型,除了function返回function类型外,其他均返回object。
constructor 是原型prototype的一个属性 new Number(1).constructor === Number null 和 undefined 无constructor,这种方法判断不了。
instanceof A 是否为 B 的实例,表达式为:A instanceof B [] instanceof Array // true [] instanceof Object // true new Number(1) instanceof Number // true 不能判断一个对象实例具体属于哪种类型
toString 推荐 Object.prototype.toString.call(value); // "[object xxx]" 可以区分 null、string、boolean、number、undefined、array、function、object、date、math等 Object.prototype.toString.call(1); // "[object Number]" // 日期类型 var date = new Date(); Object.prototype.toString.call(date); // "[object Date]"
其他 isArray Array.isArray(obj) Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false
typeof console.log(typeof true); // boolean console.log(typeof 0); // number console.log(typeof ""); // string console.log(typeof undefined); // undefined console.log(typeof null); // object console.log(typeof []); // object console.log(typeof {}); // object console.log(typeof function () {}); // function console.log(typeof new Boolean(true)); // object
instanceof instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。 console.log(true instanceof Boolean); // false console.log(new Boolean(true) instanceof Boolean); // true
constructor Null、undefined. 不存在constructor
isArray(ES5,ie8不支持)
object.prototype.toString.call(a)
Object.prototype.toString.call(); // "[object 类型]"