1.typeof操作符返回一个字符串,指示未经计算的操作数的类型。
语法:type opreand
参数: opreand是一个表达式,表示对象或者原始值,其类型将被返回。
描述:
类型 结果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol(ECMAScript 6 新增) "symbol"
函数对象 "function"
任何其他对象 "object"
2.typeof 对于一些特殊数据时的表现
typeof (new Number(1)); //结果并不是想象中的"number"而是"object"
typeof (new String("hello")); //同理结果仍然是"object"
tyoeof (new Boolean(true)); //返回"object"
typeof null; //返回也为"object"
3.instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
语法:object instanceof constructor
参数:object 要检测的对象 constructor 某个构造函数
通过这个运算符我们就可以用来检测object真正的数据类型
(new Number(1)); instanceof Number //true
(new Array("2,3")); instanceof Array //true
(new String("hello")); instanceof String //true
但是如果是null的话,好像就没办法解决了呢。我们可以提前使用对象的toString方法判断是否为null
4.更好的做法是借用Object.prototype.toString
Object.prototype.toString.call(1); // "[object Number]"
Object.prototype.toString.call(new Number(1)); // "[object Number]"
Object.prototype.toString.call("hello"); // "[object String]"
Object.prototype.toString.call(function(){}); // "[object function]"
Object.prototype.toString.call(null); // "[object Null]"
所以我们可以封装一个利用Object.prototype.toString来判断数据类型的函数。
function classOf(obj) {
return Object.prototype.toString.call(obj).slice(8, -1);
};
classOf(null); //'Null'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。