类型检测
类型检测的方法
typeof
instanceof
Object.prototype.toString
constructor
typeof
typeof
操作符返回一个字符串,表示未经计算的操作数的类型
我指举例出异常的几个
typeof undefined; // undefined
typeof null; // object
typeof NaN // number
typeof [1,2]; // object
typeof new Object(); // object
注:typeof
操作符适合对基本类型,而对引用数据类型等不合适使用
instanceof
instanceof
运算符用于检测一个对象在其原型链中是否存在一个构造函数的proptotype
属性。
//左操作数为对象,不是就返回false,右操作数必须是函数对象或者函数构造器,不是就返回`TypeError`异常 obj instanceof constr;
任何一个构造函数都有一个prototype
对象属性,这个对象属性将用new
实例化对象的原型对象。
-
instanceof
适合用于判断对象是否属于Array、Date和RegExp等内置对象
Object.prototype.toString
可以通过
toString
来获取每个对象的类型。
检测的时候为了每个对象都能通过Object.prototype.toString()
来检测,需要以Function.prototype.call
或者Function.prototype.call
或者Function.prototype.apply
的形式来调用。
Obejct.prototype.toString.call(undefined);
// "[object Undefined]"
Obejct.prototype.toString.call(null);
// "[object Null]"
Obejct.prototype.toString.call(true);
// "[object Boolean]"
Obejct.prototype.toString.call('');
/// "[object String]"